学习笔记——itertools模块
官方描述:Functional tools for creating and using iterators.即用于創(chuàng)建高效迭代器的函數(shù)。
函數(shù)目錄
| count | chain | product |
| cycle | compress | permutations |
| repeat | dropwhile | |
| filterfalse | combinations | |
| groupby | combinations_with_replacement | |
| islice | ||
| starmap | ||
| takewhile | ||
| tee | ||
| zip_longest |
1、chain
itertools.chain(*iterables) : 將多個(gè)序列作為一個(gè)單獨(dú)的序列返回。
示例:
import itertools for i in itertools.chain('i', 'love', 'python'):print(i,end=' ') ------------------ 結(jié)果: i l o v e p y t h o n2、combinations
itertools.combinations(iterable, r):返回指定長(zhǎng)度的”組合”
示例:
import itertools for i in itertools.combinations('abc', 2):print(i,end=' ') --------------------- 結(jié)果: ('a', 'b') ('a', 'c') ('b', 'c')3、combinations_with_replacement
itertools.combinations_with_replacement(iterable, r):返回指定長(zhǎng)度的“組合”,組合內(nèi)元素可重復(fù)
示例:
import itertools for i in itertools.combinations_with_replacement('abc', 2):print(i,end=' ') ---------------------- 結(jié)果: ('a', 'a') ('a', 'b') ('a', 'c') ('b', 'b') ('b', 'c') ('c', 'c')4、compress
itertools.compress(data, selectors):返回selector為True的data對(duì)應(yīng)元素
示例:
import itertools for i in itertools.compress('abcd', [1, 0, 1, 0]):print(i,end=' ') ---------------------- 結(jié)果: a c5、count
itertools.count(start=0,step=1):返回以start開始,step遞增的序列,無限遞增
示例:
import itertools for i in itertools.count(start=0, step=2):print(i,end=' ') ---------------------- 結(jié)果: a b a b···6、cycle
itertools.cycle(iterable):將迭代器進(jìn)行無限迭代
示例:
import itertools for i in itertools.cycle('ab'):print(i,end=' ') ---------------------- 結(jié)果: a b a b···7、dropwhile
itertools.dropwhile(predicate, iterable):直到predicate為真,就返回iterable后續(xù)數(shù)據(jù), 否則drop掉
示例:
import itertools for i in itertools.dropwhile(lambda x: x<5, [2,1,6,8,2,1]):print(i,end=' ') ---------------------- 結(jié)果: 6 8 2 18、filterfalse
itertools.ifilter(predicate, iterable):返回predicate結(jié)果為True的元素迭代器,如果predicate為None,則返回所有iterable中為True的項(xiàng)
示例:
import itertools for i in itertools.filterfalse(lambda x: x % 2, range(10)):print(i,end=' ') ---------------------- 結(jié)果: 0 2 4 6 89、groupby
itertools.groupby(iterable[,key]):返回一組(key,itera),key為iterable的值,itera為等于key的所有項(xiàng)
示例:
import itertools for key,value in itertools.groupby('aabbbc'):print(key,':',list(value),end=' ') ---------------------- 結(jié)果: a : ['a', 'a'] b : ['b', 'b', 'b'] c : ['c']10、islice
itertools.islice(iterable, start,stop[,step]):相當(dāng)于迭代器方式的切片操作
示例:
import itertools for i in itertools.islice('abcdefg', 1, 4, 2):print(i,end=' ') ---------------------- 結(jié)果: b d11、permutations
itertools.premutations(iteravle[,r]):返回長(zhǎng)度為r的排列
示例:
import itertools for i in itertools.permutations('abc', 2):print(i,end=' ') ---------------------- 結(jié)果: ('a', 'b') ('a', 'c') ('b', 'a') ('b', 'c') ('c', 'a') ('c', 'b')12、product
itertools.product(*iterable[,repeat]):返回指定長(zhǎng)度的所有組合,可理解為笛卡爾乘積
示例:
import itertools for i in itertools.product('abc', repeat=2):print(i,end=' ') ---------------------- 結(jié)果: ('a', 'a') ('a', 'b') ('a', 'c') ('b', 'a') ('b', 'b') ('b', 'c') ('c', 'a') ('c', 'b') ('c', 'c')13、repeat
itertools.repeat(object,[,times]):不停的返回object對(duì)象,如果指定了times,則返回times次
示例:
import itertools for i in itertools.repeat('a', 2):print(i,end=' ') ---------------------- 結(jié)果: a a14、starmap
itertools.starmap(function,iterable):返回function(iter)的值,iter為iterable的元素
示例:
import itertools for i in itertools.starmap(lambda x,y: x*y,[(1, 2),(3, 4)]):print(i,end=' ') ---------------------- 結(jié)果: 2 1215、takewhile
itertools.takewhile(predicate,iterable):如果predicate為真,則返回iterable元素,如果為假則不再返回,break
示例:
import itertools for i in itertools.takewhile(lambda x: x<5,[1,3,5,6]):print(i,end=' ') ---------------------- 結(jié)果: 1 316、tee
itertools.tee(iterable, n=2): 用于從 iterable 創(chuàng)建 n 個(gè)獨(dú)立的迭代器,以元組的形式返回, n 的默認(rèn)值是 2
示例:
import itertools for i in itertools.tee('abcd'):print(list(i),end=' ') ---------------------- 結(jié)果: ['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'd']17、zip_longest
itertools.zip_longest(*iterables, fillvalue=None):若可迭代對(duì)象的長(zhǎng)度未對(duì)齊,如果有指定 fillvalue ,則會(huì)用其填充缺失的值,否則為 None 。
示例:
import itertools for i in itertools.zip_longest('ABCD', 'xy'):print(list(i),end=' ') ---------------------- 結(jié)果: ['A', 'x'] ['B', 'y'] ['C', None] ['D', None]總結(jié)
以上是生活随笔為你收集整理的学习笔记——itertools模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 复习(三)—— 进程管理详解
- 下一篇: 学习笔记——使用下划线命名的规则