学习笔记——itertools模块

官方描述:Functional tools for creating and using iterators.即用于创建高效迭代器的函数。

函数目录

无限迭代器有限迭代器组合生成器
countchainproduct
cyclecompresspermutations
repeatdropwhile
filterfalsecombinations
groupbycombinations_with_replacement
islice
starmap
takewhile
tee
zip_longest

1、chain

itertools.chain(*iterables) : 将多个序列作为一个单独的序列返回。

示例:

import itertools
for i in itertools.chain('i', 'love', 'python'):
    print(i,end=' ')
------------------
结果:
i l o v e p y t h o n 

2、combinations

itertools.combinations(iterable, r):返回指定长度的”组合”

示例:

import itertools
for i in itertools.combinations('abc', 2):
    print(i,end=' ')
---------------------
结果:
('a', 'b') ('a', 'c') ('b', 'c')

3、combinations_with_replacement

itertools.combinations_with_replacement(iterable, r):返回指定长度的“组合”,组合内元素可重复

示例:

import itertools
for i in  itertools.combinations_with_replacement('abc', 2):
    print(i,end=' ')
----------------------
结果:
('a', 'a') ('a', 'b') ('a', 'c') ('b', 'b') ('b', 'c') ('c', 'c') 

4、compress

itertools.compress(data, selectors):返回selector为True的data对应元素

示例:

import itertools
for i in itertools.compress('abcd', [1, 0, 1, 0]):
    print(i,end=' ')
----------------------
结果:
a c 

5、count

itertools.count(start=0,step=1):返回以start开始,step递增的序列,无限递增

示例:

import itertools
for i in itertools.count(start=0, step=2):
    print(i,end=' ')
----------------------
结果:
a b a b···

6、cycle

itertools.cycle(iterable):将迭代器进行无限迭代

示例:

import itertools
for i in itertools.cycle('ab'):
    print(i,end=' ')
----------------------
结果:
a b a b···

7、dropwhile

itertools.dropwhile(predicate, iterable):直到predicate为真,就返回iterable后续数据, 否则drop掉

示例:

import itertools
for i in itertools.dropwhile(lambda x: x<5, [2,1,6,8,2,1]):
    print(i,end=' ')
----------------------
结果:
6 8 2 1 

8、filterfalse

itertools.ifilter(predicate, iterable):返回predicate结果为True的元素迭代器,如果predicate为None,则返回所有iterable中为True的项

示例:

import itertools
for i in itertools.filterfalse(lambda x: x % 2, range(10)):
    print(i,end=' ')
----------------------
结果:
0 2 4 6 8

9、groupby

itertools.groupby(iterable[,key]):返回一组(key,itera),key为iterable的值,itera为等于key的所有项

示例:

import itertools
for key,value in itertools.groupby('aabbbc'):
    print(key,':',list(value),end=' ')
----------------------
结果:
a : ['a', 'a'] b : ['b', 'b', 'b'] c : ['c']

10、islice

itertools.islice(iterable, start,stop[,step]):相当于迭代器方式的切片操作

示例:

import itertools
for i in itertools.islice('abcdefg', 1, 4, 2):
    print(i,end=' ')
----------------------
结果:
b d 

11、permutations

itertools.premutations(iteravle[,r]):返回长度为r的排列

示例:

import itertools
for i in itertools.permutations('abc', 2):
    print(i,end=' ')
----------------------
结果:
('a', 'b') ('a', 'c') ('b', 'a') ('b', 'c') ('c', 'a') ('c', 'b') 

12、product

itertools.product(*iterable[,repeat]):返回指定长度的所有组合,可理解为笛卡尔乘积

示例:

import itertools
for i in itertools.product('abc', repeat=2):
    print(i,end=' ')
----------------------
结果:
('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对象,如果指定了times,则返回times次

示例:

import itertools
for i in  itertools.repeat('a', 2):
    print(i,end=' ')
----------------------
结果:
a a 

14、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=' ')
----------------------
结果:
2 12 

15、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=' ')
----------------------
结果:
1 3 

16、tee

itertools.tee(iterable, n=2): 用于从 iterable 创建 n 个独立的迭代器,以元组的形式返回, n 的默认值是 2

示例:

import itertools
for i in itertools.tee('abcd'):
    print(list(i),end=' ')
----------------------
结果:
['a', 'b', 'c', 'd'] ['a', 'b', 'c', 'd'] 

17、zip_longest

itertools.zip_longest(*iterables, fillvalue=None):若可迭代对象的长度未对齐,如果有指定 fillvalue ,则会用其填充缺失的值,否则为 None 。

示例:

import itertools
for i in itertools.zip_longest('ABCD', 'xy'):
    print(list(i),end=' ')
----------------------
结果:
['A', 'x'] ['B', 'y'] ['C', None] ['D', None] 
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值