- 切片
- Python提高切片操作符
- 迭代
- 在給定list或tuple,我們可以通過
for
循環來遍歷。 - Python的
for
循環抽象程度高於Java。 - 如何判斷一個對象是可迭代對象呢?方法是通過collections模塊的Iterable類型判斷
- 在給定list或tuple,我們可以通過
python
>from collections import Iterable
>isinstance('abc', Iterable)
>列表生成式
- 列表生成式可以用更短的代碼達到循環的效果。
- 寫列表生成式時,把要生成的元素
x * x
放到前面,後面跟for
循環,就可以把list創建出來for
循環後面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方:
python
>[x*x for x in range(1,11) if x%2 == 0]
>[4,16, 36, 64, 100]
>- 還可以使用兩層循環
python
>[m+n for m in 'ABC' for n in 'XYZ']
>['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
>生成器
- 如果列表元素可以按照某種算法推算出來,從而節省大量的空間。這種一邊循環一邊計算的機制,稱爲生成器:generator。
- 創建
L
和g
的區別僅在於最外層的[]
和()
,L
是一個list,而g
是一個generator。- 打印生成器函數可以使用
next()
,獲取下一個返回值。- generator保存的是算法,每次調用
next()
,就計算下一個元素的值,可使用for
循環- 如果一個函數定義中包含
yield
關鍵字,那麼這個函數就不再是一個普通函數,而是一個generator小結
1. 凡是可作用於for
循環的對象都是Iterable
類型;
1. 凡是可作用於next()
函數的對象都是Iterator
類型,它們表示一個惰性計算的序列;
1. 集合數據類型如list
、dict
、str
等是Iterable
但不是Iterator
,不過可以通過iter()
函數獲得一個Iterator
對象。