科学计算发行版:Python(x,y),集合了诸多包。
一、Python使用入门
1、基本命令
(1)基本运算
*,**分别表示乘法和幂运算,可进行多重赋值:
In [1]: 3*4 Out[1]: 12 In [2]: 3**4 Out[2]: 81 In [3]: a,bb,ccc=2,'python',[2,3,4] In [4]: a Out[4]: 2 In [5]: bb Out[5]: 'python' In [6]: ccc Out[6]: [2, 3, 4]
多重赋值可针对不同类型,如数值、序列、字符串等。
(2)循环与判断
range(a,b,c)得到序列,间隔为c,首项为a,最大值为b-1;range(a)表示从0到a-1:
In [7]: range(1,11,2) Out[7]: [1, 3, 5, 7, 9] In [8]: range(13) Out[8]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
循环和判断:
#for循环 for i in range(11): a=a+i**2 print a #while循环 i=0;a=2; while i<11: a=a+i**2; i=i+1; print(a) #if 判断 s=0; if s in range(2): print u's 在里面' #u表示Unicode字符串 else: print u's 不在里面'
u'字符串'表示Unicode字符串;
(3)自编函数
In [48]: def fun1(x): ...: return x*3 ...: ...: fun1(3) Out[48]: 9 In [49]: def fun2(x=1,y=2):#这里给出默认参数 ...: return [x+y,x-y] #返回列表 ...: ...: fun2() #返回默认值 Out[49]: [3, -1] In [50]: fun2(2,3) Out[50]: [5, -1] In [51]: def fun3(x,y) : ...: return x*y,x^y #双重返回。类似于多重赋值# ...: ...: fun3(2,4) Out[51]: (8, 6)
另一种简洁的方法:lambda
In [57]: f1=lambda x:x*x-3*x ...: f1(5) Out[57]: 10 In [58]: f2=lambda x,y,z:x+y,x*z,y**z ...: f2(1,3,2) #lambda中的表达式不能含有命令,而且只限一条表达式,无法得到结果 Traceback (most recent call last): File "<ipython-input-58-e75be43f2eb7>", line 1, in <module> f2=lambda x,y,z:x+y,x*z,y**z NameError: name 'x' is not defined
2、Python数据类型:列表,元组,字典,集合
(1)元组/列表
两者的基本操作都一样,只是元组不可以修改。
In [62]: a=[1,2,3,4,'python',[1,2,3]];b=(11,22,33,44,'python',[1,2,3]) In [63]: a Out[63]: [1, 2, 3, 4, 'python', [1, 2, 3]] In [64]: b Out[64]: (11, 22, 33, 44, 'python', [1, 2, 3]) In [2]: a[0]=0;a #列表a的第一个元素被修改 Out[2]: [0, 2, 3, 4, 'python', [1, 2, 3]] In [3]: b[0]=0;b #元组b无法修改 Traceback (most recent call last): File "<ipython-input-3-e3fc51a1d10f>", line 1, in <module> b[0]=0;b TypeError: 'tuple' object does not support item assignment] In [10]: list('python') #列举出对象的每一个元素,字符串拆分为列表 Out[10]: ['p', 'y', 't', 'h', 'o', 'n'] In [11]: tuple((1,2,'python')) #拆分为元组 Out[11]: (1, 2, 'python')
另外列表还有很多的操作方法,详见《Python基础教程(第二版)》。
(2)字典
In [16]: a={'First':'zhang','Second':'qiang'} In [17]: a Out[17]: {'First': 'zhang', 'Second': 'qiang'} In [18]: a['First'] Out[18]: 'zhang' In [19]: a['Second'] Out[19]: 'qiang' In [20]: dict([['No1',11],['No2',22]]) Out[20]: {'No1': 11, 'No2': 22} In [21]: b=dict([['No1',11],['No2',22]]) In [22]: b['No1'] Out[22]: 11
相当于给每一个下标的位置取了个名字。
(3)集合
集合的特点是没有重复元素,且满足集合的基本运算:{}表示集合,里面的元素会自动去重
In [27]: {1,2,3,3,3,2,1,2,4,5,5,2,3,45} Out[27]: {1, 2, 3, 4, 5, 45} In [28]: a=set([1,2,3,3,3,2,1,2,4,5,5,2,3,45]) In [29]: b={1,2,55,66,2,1,55,66,77} In [30]: a|b #集合的并 Out[30]: {1, 2, 3, 4, 5, 45, 55, 66, 77} In [31]: a&b #集合的交 Out[31]: {1, 2} In [32]: a-b #差集 Out[32]: {3, 4, 5, 45} In [33]: a^b # a∪b-a∩b Out[33]: {3, 4, 5, 45, 55, 66, 77}
(4)map()、reduce()、filter()函数
In [34]: a=[1,2,3,44,55] In [35]: b=[i*2+1 for i in a] In [36]: b Out[36]: [3, 5, 7, 89, 111]
其中的i可以认为是每一个下标,对每一个元素进行操作,返回b;map()函数将命令逐一应用,属于循环运算
In [39]: b=map(lambda x:x**2+2,a); ...: list(b)#这是python3.0中要求的 Out[39]: [3, 6, 11, 1938, 3027]
reduce()函数用于递归运算:
In [48]: a=range(-1,9,2) In [49]: reduce(lambda x,y:x+y,range(-1,9,2)) #前后累加 Out[49]: 15 In [50]: reduce(lambda x,y:x*y,range(-1,9,2)) #前后连乘 Out[50]: -105 In [51]: reduce(lambda x,y:x+2*y+x**2,range(-1,9,2)) #前后累加 Out[51]: 27736
filter()依据条件函数进行过滤:
In [58]: a=range(-1,9,2);a Out[58]: [-1, 1, 3, 5, 7] In [59]: filter(lambda x:x>0 and x<6,a) Out[59]: [1, 3, 5] #选取元素中满足条件的, In [61]: [a[i] for i in range(len(a)) if a[i]<6 and a[i]>0 ] Out[61]: [1, 3, 5]
(5)库函数的导入于使用
苦和库中的函数均可重命名
In [66]: import pandas as pa In [67]: from math import sin as zx In [68]: zx(1) Out[68]: 0.8414709848078965