Python5条件,本章所涉及的函数;
循环和其他语句
赋值的方法:
5.1序列解包: 将多个值得序列揭开,然后放到变量的序列中;
In [14]: values = 1,2,3 In [15]: values Out[15]: (1, 2, 3) In [16]: x,y,z=values In [17]: x Out[17]: 1
5.2链式赋值:是将同一个值赋给多个变量。如下;
In [18]: q=w=e=1 In [19]: q Out[19]: 1 In [20]: w Out[20]: 1
5.3增量赋值:将表达式运算符放置在赋值运算符=的左边.如下;
In [21]: x =2 In [22]: x +=3 In [23]: x Out[23]: 5 In [24]: x *=2 In [25]: x Out[25]: 10
5.4语句块:并非一种语句,实在条件为真(条件语句)时执行或者执行执行多次(循环语句)的一组语句,在代码前放置空格来缩进语句即可创建语句块;
False None 0 "" () {} [] 这些类型在解释器解析时都为假,其他的一切都为真值,包括特殊值True.标准的真值为True和False。或者为1和0.
5.5 if语句
If 条件1 : if 条件2 : print 结果2 elif 条件3 : print 结果3 else: print 结果4
附加:如果要确保程序中的某个条件为真才能让程序正常工作的话,assert语句就很有用了;
In [36]: age = -1 In [37]: assert 0<age<100, 'TMD,This is age,age not negative.' --------------------------------------------------------------------------- AssertionError Traceback (most recent call last) <ipython-input-37-26492895f2fc> in <module>() ----> 1 assert 0<age<100, 'TMD,This is age,age not negative' AssertionError: TMD,This is age,age not negative.
5.6while循环 和shell一样,当条件为真时,重复执行;
x=1 while x <=100: print x x +=1
5.7 for循环 和shell一样,给出一个列表,一次按顺序执行.
In [43]: numbers = [1,2,3,4] In [44]: for num in numbers: print num ....: 1 2 3 4
5.8 常用的一些迭代工具
5.8.1 并行迭代:程序可以同时迭代两个序列。
In [13]: name = ['lambert','kangkang','kevin'] In [14]: age = [20,18,25] In [15]: for i in range(len(name)): print name[i],'is',age[i],"years old" ....: lambert is 20 years old kangkang is 18 years old kevin is 25 years old
5.8.2内建的zip函数可以用来进行并行迭代;
In [16]: name = ['lambert','kangkang','kevin'] In [17]: age = [20,18,25] In [18]: zip(name,age) Out[18]: [('lambert', 20), ('kangkang', 18), ('kevin', 25)]
5.8.3编号迭代:有些时候想要迭代序列中的对象,同时还要获取当前对象的索引
5.8.4翻转和排序迭代
reversed和sorted函数
In [57]: sorted([34,234,3,9]) Out[57]: [3, 9, 34, 234] In [61]: list(reversed('Hello,world')) Out[61]: ['d', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'H']
5.9跳出循环
break 直接跳出程序
continue语句比break语句用得要少很多,它会让当前的迭代结束,跳到下一轮循环的开始,基本的意思是“跳过剩余的循环体,但是不结束循环”
当循环体很大而且很复杂的时候,这会很有用。
5.10列表推导式---轻量级循环:是利用其他列表创建新列表,它的工作方式类似于for循环
例如:
In [31]: [x*x for x in range(10) if x % 3 == 0] Out[31]: [0, 9, 36, 81] In [32]: [(x,y) for x in range(3) for y in range(3)] Out[32]: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
5.11 pass程序可以让程序什么都不做,对于没有完成的函数和类,这种方法很有用
5.12有些时候可能会需要动态地创造python代码,然后将其作为语句执行或作为表达式计算;
常见的方法有
exec eval