Python基礎語法學習筆記(二)

一、切片

取一個list或tuple的部分元素是非常常見的操作。

L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']

L[0:3]表示,從索引0開始取,直到索引3爲止,但不包括索引3。如果第一個索引是0,還可以省略爲L[:3]。

什麼都不寫,只寫[:]就可以原樣複製一個list。

tuple也是一種list,唯一區別是tuple不可變。因此,tuple也可以用切片操作,只是操作的結果仍是tuple。

(0, 1, 2, 3, 4, 5)[:3]

字符串'xxx'也可以看成是一種list,每個元素就是一個字符。因此,字符串也可以用切片操作,只是操作結果仍是字符串。

二、迭代

Python的for循環不僅可以用在list或tuple上

d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
     print(key)

dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時迭代key和value,可以用for k, v in d.items()。

如何判斷一個對象是可迭代對象呢?方法是通過collections模塊的Iterable類型判斷。

from collections import Iterable
    isinstance('abc', Iterable)

三、列表生成式

生成[1x1, 2x2, 3x3, ..., 10x10],要生成的元素x * x放到前面,後面跟for循環,就可以把list創建出來。

[x * x for x in range(1, 11) if x % 2 == 0]

還可以使用兩層循環,可以生成全排列:
    [m + n for m in 'ABC' for n in 'XYZ']

四、生成器

第一種方法,只要把一個列表生成式的[]改成(),就創建了一個generator。

第二種方法,如果一個函數定義中包含yield關鍵字,那麼這個函數就不再是一個普通函數,而是一個generator。generator和函數的執行流程不一樣。函數是順序執行,遇到return語句或者最後一行函數語句就返回。而變成generator的函數,在每次調用next()的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行。

五、迭代器

可以使用isinstance()判斷一個對象是否是Iterable對象。

from collections import Iterable
    isinstance([], Iterable)

可以使用isinstance()判斷一個對象是否是Iterator對象。

from collections import Iterator
    isinstance((x for x in range(10)), Iterator)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章