條件語(yǔ)句
if相關(guān)
格式:
1) if expression : statement #只有一個(gè)if并且代碼塊只有一行,可以直接寫在:后面
2) if expression:
statement
else:
statement
3) if expression:
statement
elif expr2:
statement
elif ... :
...
else:
statement n
三元操作符
X if C else Y
while / for and break / else
while循環(huán)基本結(jié)構(gòu)
while xxx:
statement
for循環(huán)基本結(jié)構(gòu)
for xx in iterable:
statement
循環(huán)+else
loop
if ...:
xxx
break
else:
statement
循環(huán)+else結(jié)構(gòu),指的是如果循環(huán)完成,則執(zhí)行else中的語(yǔ)句
continue與c / java中一樣
pass: nop
迭代器
迭代器的要求:
提供next()方法,每次都取出下一個(gè)對(duì)象。當(dāng)next到末尾時(shí),拋出一個(gè)StopIteration異常
迭代器的使用:
for循環(huán)可以支持所有可迭代的對(duì)象 (列表、字典、文件。。。)
使用迭代器時(shí)不應(yīng)當(dāng)改變其內(nèi)容
創(chuàng)建迭代器
對(duì)一個(gè)對(duì)象調(diào)用 iter() 就可以得到它的迭代器. 它的語(yǔ)法如下:
iter(obj)
iter(func, sentinel )
如果是傳遞兩個(gè)參數(shù)給 iter() , 它會(huì)重復(fù)地調(diào)用 func , 直到迭代器的下個(gè)值等于sentinel
列表解析
語(yǔ)法
[expr for iter_var in iterable if cond_expr] #[]不能省略
結(jié)果:
根據(jù)if條件,對(duì)iterable中所有元素進(jìn)行expr,并返回一個(gè)結(jié)果列表
1. 不滿足if條件的元素會(huì)被忽略,不會(huì)在結(jié)果列表中
2. 滿足if條件的元素會(huì)進(jìn)行expr
3. 最后會(huì)創(chuàng)建一個(gè)新列表保存結(jié)果
eg
>>> a = [1,2,3,4,5,6]
>>> p = [value*2 for value in a if value%2==0]
>>> print p
[4, 8, 12]
>>>
生成器表達(dá)式
語(yǔ)法
(expr for iter_var in iterable if cond_expr) #()可以省略
特點(diǎn)(與列表解析的區(qū)別)
表達(dá)式返回的是一個(gè)生成器。這個(gè)生成器會(huì)根據(jù)要求,把元素一個(gè)一個(gè)“生成出來(lái)”
優(yōu)點(diǎn):節(jié)約內(nèi)存空間,在很多情況下也能提高速度
例子:
return max(len(x.strip()) for x in open('/etc/motd')) #統(tǒng)計(jì)/etc/motd文件中最長(zhǎng)的一行
note note