【python技巧059】用itertools處理各種花樣的迭代
2022-12-29 21:44 作者:小倪同學(xué)0v0 | 我要投稿

本節(jié)課大綱:
阿岳每期都是滿(mǎn)滿(mǎn)的干貨啊...
(小約定:紅色函數(shù)代表在itertools庫(kù)里,綠色代表是內(nèi)置函數(shù),藍(lán)色代表在functiontools里)
- 根據(jù)一坨東西得到一個(gè)東西
- sum函數(shù):求和
- reduce函數(shù):減少。e.g. reduce(f, [a, b, c, d]) <==> f(f(f(a, b), c), d),此處f應(yīng)為Callable[[Any, Any], Any],即兩個(gè)輸入一個(gè)輸出
- operator模塊:各種運(yùn)算符
- 去重
- set轉(zhuǎn)集合。e.g. set([1, 2, 3, 1, 4]) == {1, 2, 3, 4}
- groupby 相鄰去重。在這里太難寫(xiě)了,看視頻吧
- 一坨東西變換得到另一坨東西(映射)
- map函數(shù)。e.g. list(map(lambda x: x**2, [1, 2, 5, 9])) == [1, 4, 25, 81]。注意:map函數(shù)生成一個(gè)map對(duì)象,不是列表
- accumulate求前綴和
- 篩選
- filter 傳入回調(diào)函數(shù)。e.g. list(filter(lambda x: x % 2 == 0, arr))只保留偶數(shù)。注意:生成一個(gè)filter對(duì)象
- filterfalse 傳入回調(diào)函數(shù)(看名字也能看出來(lái)和filter的區(qū)別和聯(lián)系)注意:生成一個(gè)filterfalse對(duì)象
- compress 傳入一大堆False和True。e.g. list(compress([1, 2, 3, 4, 5], [True, False, False, True, True])) == [1, 4, 5]。注意:生成一個(gè)compress對(duì)象
- dropwhile拋掉拋掉直到... 傳入回調(diào)函數(shù)。e.g. list(dropwhile(lambda x: x < 5, [1, 4, 6, 4, 1])) == [6, 4, 1]。注意:生成一個(gè)dropwhile對(duì)象
- takewhile保留保留直到... 傳入回調(diào)函數(shù)。e.g. list(takewhile(lambda x: x < 5, [1, 4, 6, 4, 1])) == [1, 4]。注意:生成一個(gè)takewhile對(duì)象
- islice 切片兒,不止對(duì)列表元組,對(duì)一切可迭代對(duì)象
- 一坨東西拆成鏈、合并
- chain 把一大堆一維數(shù)組合并成一個(gè)一維數(shù)組。注意:生成一個(gè)chain對(duì)象
- chan.from_iterable 把一個(gè)二維數(shù)組展開(kāi)成一個(gè)一維數(shù)組。注意:生成一個(gè)chain對(duì)象
- pairwise 兩兩一組(3.10新特性)。e.g. list(pairwise('abcde')) == ['ab', 'bc', 'cd', 'de']
- starmap 用一個(gè)函數(shù)結(jié)合。e.g. list(starmap(pow, [(2, 5), (3, 2), (10, 3)])) == [32, 9, 1000]。注意:生成一個(gè)starmap對(duì)象
- zip 看短的來(lái)
- zip_longest 看長(zhǎng)的來(lái)
- 排列組合
- product之前講過(guò)(補(bǔ)充:repeat=3)
- permutations(講過(guò))
- combinations(講過(guò))
- combinations_with_replacement(講過(guò))
- 無(wú)窮迭代器
- repeat(x, n) 同一個(gè)東西x重復(fù)n遍;如果沒(méi)有n,則永久返回x
- count(start=0, step=1) 從start開(kāi)始永遠(yuǎn)數(shù)下去,可設(shè)定步長(zhǎng)。enumerate(arr)等價(jià)于zip(count(0), arr)
- cycle(iterable) 一個(gè)可迭代對(duì)象首尾相接一直迭代下去
以上如有錯(cuò)誤,歡迎指出
(不得不說(shuō)用PVZ講解有一種奇特的效果 )
標(biāo)簽: