學習筆記_itertools
學習日期:2016年10月11日
學習課程:itertools - 廖雪峯的官方網站
- Python的內建模塊
itertools
提供了非常有用的用於操作迭代對象的函數。
無限迭代器
count(x, y)
從x開始的整數循環器,每次增加y,如果不指定y則默認y爲1cycle('abc')
重複序列的元素,既a, b, c, a, b, c …repeat(x,y)
重複x這個參數y次,如果不指定y即無限重複。無限序列只有在
for
迭代時纔會無限地迭代下去,如果只是創建了一個迭代對象,它不會事先把無限個元素生成出來,事實上也不可能在內存中創建無限多個元素。(迭代器)無限序列雖然可以無限迭代下去,但是通常我們會通過
takewhile()
等函數根據條件判斷來截取出一個有限的序列。例子:
>>> natuals = itertools.count(1)
>>> ns = itertools.takewhile(lambda x: x <= 10, natuals)
>>> list(ns)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
chain()
- chain()可以把一組迭代對象串聯起來,形成一個更大的迭代器。
groupby()
groupby()把迭代器中相鄰的重複元素挑出來放在一起。
實際上挑選規則是通過函數完成的(即第二個參數可以是函數),只要作用於函數的兩個元素返回的值相等,這兩個元素就被認爲是在一組的,而函數返回值作爲組的key。
例子:
>>> for key, group in itertools.groupby('AaaBBbcCAAa', lambda c: c.upper()):
... print(key, list(group))
...
A ['A', 'a', 'a']
B ['B', 'B', 'b']
C ['c', 'C']
A ['A', 'A', 'a']