Python5条件,本章所涉及的函数;
循环和其他语句
赋值的方法:
5.1序列解包: 将多个值得序列揭开,然后放到变量的序列中;
In [14]: values = 1,2,3In [15]: valuesOut[15]: (1, 2, 3)In [16]: x,y,z=valuesIn [17]: xOut[17]: 1
5.2链式赋值:是将同一个值赋给多个变量。如下;
In [18]: q=w=e=1In [19]: qOut[19]: 1In [20]: wOut[20]: 1
5.3增量赋值:将表达式运算符放置在赋值运算符=的左边.如下;
In [21]: x =2In [22]: x +=3In [23]: xOut[23]: 5In [24]: x *=2In [25]: xOut[25]: 10
5.4语句块:并非一种语句,实在条件为真(条件语句)时执行或者执行执行多次(循环语句)的一组语句,在代码前放置空格来缩进语句即可创建语句块;
False None 0 "" () {} [] 这些类型在解释器解析时都为假,其他的一切都为真值,包括特殊值True.标准的真值为True和False。或者为1和0.
5.5 if语句
If 条件1 : if 条件2 : print 结果2elif 条件3 : print 结果3else: print 结果4
附加:如果要确保程序中的某个条件为真才能让程序正常工作的话,assert语句就很有用了;
In [36]: age = -1In [37]: assert 0<100, 'TMD,This is age,age not negative.'---------------------------------------------------------------------------AssertionError Traceback (most recent call last) in ()----> 1 assert 0 <100, 'TMD,This is age,age not negative'AssertionError: TMD,This is age,age not negative.
5.6while循环 和shell一样,当条件为真时,重复执行;
x=1while x <=100: print xx +=1
5.7 for循环 和shell一样,给出一个列表,一次按顺序执行.
In [43]: numbers = [1,2,3,4]In [44]: for num in numbers: print num ....: 1234
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 oldkangkang is 18 years oldkevin 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