條件語句
if相關
格式:
1) if expression : statement #只有一個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循環基本結構
while xxx:
statement
for循環基本結構
for xx in iterable:
statement
循環+else
loop
if ...:
xxx
break
else:
statement
循環+else結構,指的是如果循環完成,則執行else中的語句
continue與c / java中一樣
pass: nop
迭代器
迭代器的要求:
提供next()方法,每次都取出下一個對象。當next到末尾時,拋出一個StopIteration異常
迭代器的使用:
for循環可以支持所有可迭代的對象 (列表、字典、文件。。。)
使用迭代器時不應當改變其內容
創建迭代器
對一個對象調用 iter() 就可以得到它的迭代器. 它的語法如下:
iter(obj)
iter(func, sentinel )
如果是傳遞兩個參數給 iter() , 它會重復地調用 func , 直到迭代器的下個值等于sentinel
列表解析
語法
[expr for iter_var in iterable if cond_expr] #[]不能省略
結果:
根據if條件,對iterable中所有元素進行expr,并返回一個結果列表
1. 不滿足if條件的元素會被忽略,不會在結果列表中
2. 滿足if條件的元素會進行expr
3. 最后會創建一個新列表保存結果
eg
>>> a = [1,2,3,4,5,6]
>>> p = [value*2 for value in a if value%2==0]
>>> print p
[4, 8, 12]
>>>
生成器表達式
語法
(expr for iter_var in iterable if cond_expr) #()可以省略
特點(與列表解析的區別)
表達式返回的是一個生成器。這個生成器會根據要求,把元素一個一個“生成出來”
優點:節約內存空間,在很多情況下也能提高速度
例子:
return max(len(x.strip()) for x in open('/etc/motd')) #統計/etc/motd文件中最長的一行
note note