去学经济学了,结果大三选了python,重新捡起来继续

 

注:仅作为个人学习记录,不保证正确性以及其他任何,欢迎大佬随时指出错误!
       学习内容与经济学高度相关,大概不是传统意义上的python学习
课程为全英文所以大量注解不会被翻译

Week 1 L1:

  1. 又见“hello world”,可以说不管什么语言,不管什么领域,教编程第一步永远是让计算机输出 Hello World 吧。好像又回到...大概16年,我们学的还是Pascal那个语言,第一次输出“Hello World”的时候。输出语句:
    print("hello world")

    不需要打分号好不习惯啊(来自C++人的执念)

  2. #使用#来做注释,再见双斜线
    import numpy as np#见下文
    x = np.array([1,2,3,4])#定义数组吗?
    y = np.sum(x)#python这么简洁吗??
    z = 3+4
    print(x)
    print(y)
    print(z)#习惯C++x写这个还挺别扭,话说这绝对不是完整的一个程序吧
  3. package and import(导入)  
    from numpy import * #从package导入,注意名称不要重叠
    from numpy import cos #only import cosine function from package numpy
    import numpy
    numpy.cos(0) #又一种方法
    import numpy as np
    np.cos(0) #2中使用的

    但是numpy这个package老师你怎么不告诉我们在哪里下载...写惯了C++感觉思维僵化,满脑子是自己现写函数。

  4. 定义 Data Types 以及 Legal Variable Names (与C++差不多)
    x, y, z = 1, 3.1415, 'a' #用逗号分隔,很简便

Week 1 L2:

     Core Native Data Types

      Numeric; Boolean布尔变量; String; Lists列表没见过; Tuples?; Dictionary词典是什么意思; Sets; Range;

1. Numeric(这井号注释怎么一会儿好用一会儿不好用)(float, int, complex)

x = 1
type(x)#输出x的变量类型 int
x = 1.0
type(x)#已经从 int 变成 float 了,输出 float
x = float(1)
type(x)#输出还是float
int(1.6)#输出会是 1
已折叠
  • complex number :使用“j”或者“complex()”来设置变量
    x = 2 + 3j
    x = complex(1,2)#x=1+2j

2. Boolean(bool)

x = bool(0)#这是false
x = bool("")#这也是false
x = bool(1)#True
x = bool(0.5)#这也是True,非零非空表示True
已折叠

2. Strings(str)

1 x = 'abc'#字符单引号
2 y="123"#数字双引号
3 z = '"A quotation!"'#熟悉的单双引号互换
4 x = 'python string'
5 x[-1]#这表示 g (就像土包子进了城,tmdC++ 你学学人家)
6 L = len(x)#求字符长度
已折叠

 python中,所有的 variable[] 依旧以‘0’为起始

x[0:10:2]#从 0 到 10 ,间隔隔2个空间输出
x[0:0:-1]#倒着输出(C++人羡慕了)
x[10:]#输出'ing'
x[-3:]#还是输出'ing'
已折叠
  •  f-Strings 新的格式
    price = 100.3312#先定义2个变量 一个float
    volume = 132000#一个int
    f'The price yesterday was {price} and the volume was {volume}'#输出:'The price yesterday was 100.3312 and the volume was 132000'
    f'The price yesterday was {price:.1f} and the volume was {volume}'
    # {price:.1f} 保留了一位小数。输出:'The price yesterday was 100.3 and the volume was 132000'

    f-Strings allow variables to be directly included in the string which saves appending format method to the string.

4. Lists(list) 以前我习惯叫类似的变量为数组

x = []#设立一个list(好tm简单,不需要设定空间吗?可能是我以前NOIP后遗症,不知道平常人怎么写代码,C++可以这么搞吗?)
x = [1]*5#Elements can be repeated using * 此时x==[1,1,1,1,1]
#下面是2维数组
x= [[1,2,3,4],[1,2,3]]#这么搞会经常少写括号吧,想起自己悲惨往事。
#以及可以定义Mixed data types
x = [1,1.0,1+0j,'one',True]
已折叠

  List Functions and Methods:

   multidimensional list

  

x = [[1,2,3,4],[5,6,7,8]]
x[0]#里面是1,2,3,4
x[1]#里面是5,6,7,8
x[0][0]#里面存储1
x[1][1:4]#里面是6,7,8
2维list
x.append(0)#在一维list的队尾插入 0 
len(x)#求x中元素量
x.extend([2,3,4])#向list x 中加入list[2,3,4]
x.pop(1)#弹出x[1]中的元素,所有元素前移
x.remove(3)#删去list x 中第一个出现的 3
x.count(1)#计算 list x 中有几个 1 
x.index(4)#输出 4 在list x 中最早出现的位置
del x[2]#删去x[2]中元素,无输出
del x[:]#list x 变为空集
list操作

5.Tuples(tuple)

x.count(2)#计数
x.index(4)#输出元素 4 所处的位置
x = (2)#这是int
x = (2,)#这是tuple
tuple的操作与定义

6.Dictionary(dict)

   类似于自己定义一组语言,每个空间有了自己的名字与储存的内容

data = {'age': 34, 'children' : [1,2], 1: 'apple'}#使用了大括号{}
data['age']#输出34
data['children']#输出[1,2]
data[1]#输出 apple
data['name'] = 'abc'#向dict data中添加元素
del data['age']#删除元素
#其中的'age' 'children' 1 'name' 都被称为key,所存储的内容为value
data.keys()#输出所有的keys,但有前缀
data.values()#输出所有的value,但有前缀
list(data.keys())#单纯输出所有keys
list(data.values())#单纯输出所有value
data.items()
#dict_items([('children', [1, 2]), (1, 'apple'), ('name', 'abc')])输出这些
list(data.items())
#[('children', [1, 2]), (1, 'apple'), ('name', 'abc')]输出这些
dict的基本定义

 

7.Sets(set)

x = set([1,2,3,4,2])#定义一个set
x.add(5)#向集合中添加元素,如果已经有了此元素,集合不变
y = set([2,3,6])
x.difference(y)#求x中有,y没有的元素
x.intersection(y)#求x与y的交集
x.remove(2)#删一个元素
x.union(y)#求并集
set的操作指令

 

8.Range(range)

  range常见于for循环(这也算数据类型吗?)

  range(a,b,i)意为 a, a+i, a+2i +...+ a+mi <=b

  range(a,b) 就是range(a,b,1);range(b)就是range(0,b,1)

list(range(0,10,3))#输出 0,3,6,9
x = range(10)
print(x)
list(x)#注意print 和list 输出的区别
range

 9.关于python对变量的空间定义(?)

  如果直接 y = x ,在计算机内部2者使用同一空间,一方变化,另一个也改变内容

  使用y = x[:] 或者 y = x.copy() 可以解决这个问题

 

   但是在2维list中,copy不适用

   引入 module copy,使用 y = cp.deepcopy(x) 来解决问题

 

 

L3 Flow Control and Excepting Handing

一. Comparisons and Logical Operators

x<y<z#这是可以直接比较的
x<=y<=z#也是可以直接写的
x == y#等于的写法和C++一样
x != y#我有些忘记以前不等于是不是这样了
not True#就是False,可是我为什么要这么写。此外还有and or 
all([1<2,2<3,3<4])
any([1 <= 2 , 5 <= 6, 6 <= 7])
#可以使用all和any来判断list里的True False
1 in [0, 1, 2]#x in y returns True if x is included in y
1<2>1#还可以这么写?牛的
#不仅仅list 还有set range tuple
1 in (0, 1, 2)#True
1 in {0, 1, 2}#True
1 in range(3)#True
判断True False

 

二. Flow Control

1. if...elif...else(实在没啥好说的)

2. for循环

for i in iterable
    code to run#循环代码
a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'}
for i in a_dict:
    print(i,":",a_dict[i])
#color : blue
#fruit : apple
#pet : dog。 特别的数据类型的for循环

   (1) zip function allows you to iterate in parallel over two or more iterables.

  **注意使用print的方式

 

   (2) break 嗯,没有变化,过了

   (3) enumerate 枚举?翻译应该不是这意思

 

   (4) continue 也没变化,跳过此次循环后面部分

3. while 循环

   基础使用无变化

4. List Comprehension

import numpy as np
x
= list(range(5)) y = [] for i in range(len(x)): y.append(np.exp(x[i]))#y 存储 e 的 i 次方
#如果使用List Comprehension 则
z = [np.exp(x[i]) for i in range(len(x))] # or z = [np.exp(i) for i in x]

(写累了,这老师怎么填鸭式教育啊) 

  * set, tuple, dict 的list comprehension:

    

 

三. Expectation Handing

  (1) try...expect

    else, finally, raise... 

   L4 Functions and Modules

4.1 Function Bastic 

import numpy as np
np.random.randn()#生成随机数

 

4.2 Custom Function 

   先在课件上写笔记了,有梳理的必要的再整理。

    1. 定义函数

  2. Argument

  3. Variable Number of Inputs 可变输入数量

    (1)*args 

      The ⁎args syntax will generate a tuple containing all inputs past the required input list.

def myFun(arg1, *argv):
    print("First argument :", arg1)
    for arg in argv:
        print("Next argument through *argv :", arg)#输出见note

   4. Variable Scope变量作用域

   5. lambda Functions#特别的函数,简单的处理输入的变量

 4.3 Module and package

 

 L6 Numpy

1.0 Array 数组

import numpy as np
x = [0.0, 1, 2, 3, 4]
y = np.array(x)#变数组
np.shape(y)#输出shape

 

1.1.1 dtypes

1.1.2 存储时改数据类型 y = array(x, dtype='float64')

1.2.1 np.ndim(x) 输出数组维度 Array Dimensions

   np.shape(x) 输出数组的规模

1.2.3 np.zeros((2, 2, 2)) 创建全为 0 的3维数组

1.3.1 对于一维Array , x[0]表示第一个element

   对于二维数组, x[0,0]表示第一个element x[0]表示第一行elements

1.3.2 Array Slicing    tmd怎么这么长

   np.arange(25.0) 创建一个序列

   y = np.reshape(np.arange(25.0),(5,5)) 制作一个5x5的,0到24 的矩阵

     y.flat[12:15]#只会输出一维

2.1.0 Array assignment

x[0,:] = array([1.0, 2.0, 3.0])

 2.1.1 np.pi ==3.1415926......

2.2.2 x+y array的相加性质相减

  np.tile(x,(3,1)) 类似于复制,但有一定大小限制

2.2.3 矩阵乘法 x @ y  : x.dot(y)  np.dot(x,y)

3.1.0 生成矩阵

posted @ 2023-03-03 03:30  cheng-qing  阅读(26)  评论(0编辑  收藏  举报