學習筆記_itertools

學習筆記_itertools

學習日期:2016年10月11日
學習課程:itertools - 廖雪峯的官方網站

  • Python的內建模塊itertools提供了非常有用的用於操作迭代對象的函數。

無限迭代器

  • count(x, y) 從x開始的整數循環器,每次增加y,如果不指定y則默認y爲1

  • cycle('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']
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章