前言
Python用來處理迭代器的工具你想到了啥?itertools 就是一個特別有用的庫,它提供了一系列用于創建和操作迭代器的工具,以下是10個常用的操作,可用在實際工作中,熟練掌握這些操作,將極大提升你在 Python 中的編程效率。
?
1. 無限計數器:?count()
count(start, step)?
用于創建一個無限的迭代器,從?start?
開始,每次增加?step?
。
import?itertoolsfor?num?in?itertools.count(10,?2):if?num?>?20:breakprint(num)
2. 循環迭代:?cycle()
cycle(iterable)?
會無限重復迭代一個可迭代對象。
counter?=?0
for?item?in?itertools.cycle('ABCD'):if?counter?>?7:breakprint(item)counter?+=?1
3. 重復元素:?repeat()
repeat(object, times)?
重復一個對象?times?
次。
for?item?in?itertools.repeat('Hello',?3):print(item)
4. 鏈接迭代器:?chain()
chain(*iterables)?
用于鏈接多個迭代器。
for?item?in?itertools.chain([1,?2,?3],?['a',?'b']):print(item)
5. 數據過濾:?compress()
compress(data, selectors)?
根據?selectors?
中的布爾值過濾?data?
。
for?item?in?itertools.compress('ABCDE',?[1,0,1,0,1]):print(item)
6. 迭代器切片:?islice()
islice(iterable, start, stop[, step])?
對迭代器進行切片操作。
for?item?in?itertools.islice(range(10),?2,?8,?2):print(item)
7. 笛卡爾積:?product()
product(*iterables, repeat=1)?
創建一個迭代器,生成輸入迭代器的笛卡爾積。
for?item?in?itertools.product('AB',?range(2)):print(item)
8. 排列組合:?permutations()
permutations(iterable, r=None)?
返回可迭代對象的所有長度為?r?
的排列。
for?item?in?itertools.permutations('ABC',?2):print(item)
9. 組合生成:?combinations()
combinations(iterable, r)?
返回可迭代對象的所有長度為?r?
的組合。
for?item?in?itertools.combinations('ABC',?2):print(item)
10. 組合生成(允許重復):?combinations_with_replacement()
combinations_with_replacement(iterable, r)?
類似于?combinations?
,但允許元素重復。
for?item?in?itertools.combinations_with_replacement('ABC',?2):print(item)
結語
itertools?
庫提供了強大而靈活的工具集,用于處理各種迭代任務。無論是簡單的數據重復還是復雜的數據組合,?itertools?
都能輕松應對。