科学计算发行版:Python(x,y),集合了诸多包。
一、Python使用入门
1、基本命令
(1)基本运算
*,**分别表示乘法和幂运算,可进行多重赋值:
In [1]: 3*4Out[1]: 12In [2]: 3**4Out[2]: 81In [3]: a,bb,ccc=2,'python',[2,3,4]In [4]: aOut[4]: 2In [5]: bbOut[5]: 'python'In [6]: cccOut[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**2print 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]: 9In [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]: 10In [58]: f2=lambda x,y,z:x+y,x*z,y**z ...: f2(1,3,2) #lambda中的表达式不能含有命令,而且只限一条表达式,无法得到结果Traceback (most recent call last): File "", line 1, in f2=lambda x,y,z:x+y,x*z,y**zNameError: 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]: aOut[63]: [1, 2, 3, 4, 'python', [1, 2, 3]]In [64]: bOut[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 "", line 1, in b[0]=0;bTypeError: '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]: aOut[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∩bOut[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]: bOut[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]: 15In [50]: reduce(lambda x,y:x*y,range(-1,9,2)) #前后连乘Out[50]: -105In [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);aOut[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 paIn [67]: from math import sin as zxIn [68]: zx(1)Out[68]: 0.8414709848078965