iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
0
自我挑戰組

Python初學者的自學筆記系列 第 25

Day25 itertools

迭代器(iterator)在Python中是一種很常用也很好用的資料結構,比起list來說,迭代器最大的優勢就是延遲計算,按需使用,從而提高執行效率及開發體驗,以至於在Python 3中map,filter等操作返回的不再是列表而是反覆運算器。

話雖這麼說但大家平時用到的迭代器大概只有在for迴圈中看到range了,而通過iter函式把列表物件轉化為迭代器物件又有點多此一舉,這時候我們今天的主角itertools就該上場了。

使用itertools
itertools中的函式大多是返回各種迭代器物件,其中很多函式的作用我們平時要寫很多程式碼才能達到,而在執行效率上反而更低,畢竟人家是系統庫。
1、itertools.chain:連線多個列表或者迭代器。

import itertools
x = itertools.chain(range(3), range(4), [3,4,5])
print(list(x))

結果:
[0, 1, 2, 0, 1, 2, 3, 3, 4, 5]
2、itertools.accumulate:簡單來說就是累加。

import itertools
x = itertools.accumulate(range(10))
print(list(x))

結果:
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]
4、 itertools.count:就是一個計數器,可以指定起始位置
itertools.islice:對迭代器進行切片

import itertools
x = itertools.count(start=10, step=-1)
print(list(itertools.islice(x, 0, 6, 1)))

結果:
[10, 9, 8, 7, 6, 5]
5、itertools.combinations對裡面的數字進行排列組合

import itertools
x = itertools.combinations(range(4), 3)
print(list(x))

結果: [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)]


上一篇
Day24 迴圈應用
下一篇
Day26排序
系列文
Python初學者的自學筆記30

尚未有邦友留言

立即登入留言