Python标准库(1) — itertools模块

專 欄

Jerry,Python中文社区专栏作者。
blog:https://my.oschina.net/jhao104/blog

github:https://github.com/jhao104

简介

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

*itertools.chain(iterable)

将多个序列作为一个单独的序列返回。
例如:


      1. `import itertools`
2. `for each in itertools.chain('i', 'love', 'python'):`
3. `print each`


    

输出:


      1. `i`
2. `l`
3. `o`
4. `v`
5. `e`
6. `p`
7. `y`
8. `t`
9. `h`
10. `o`
11. `n`


    

itertools.combinations(iterable, r)

返回指定长度的"组合"
例如:


      1. `import itertools`
2. `for each in itertools.combinations('abc', 2):`
3. `print each`


    

输出:


      1. `('a', 'b')`
2. `('a', 'c')`
3. `('b', 'c')`


    

itertools.combinations_with_replacement(iterable, r)

返回指定长度的“组合”,组合内元素可重复
例如:


      1. `import itertools`
2. `for each in itertools.combinations_with_replacement('abc', 2):`
3. `print each`


    

输出:


      1. `('a', 'a')`
2. `('a', 'b')`
3. `('a', 'c')`
4. `('b', 'b')`
5. `('b', 'c')`
6. `('c', 'c')`


    

*itertools.product(iterable[,repeat])

返回指定长度的所有组合,可理解为笛卡尔乘积
例如:


      1. `import itertools`
2. `for each in itertools.product('abc', repeat=2):`
3. `print each`


    

('a', 'a')
('a', 'b')
('a', 'c')
('b', 'a')
('b', 'b')
('b', 'c')
('c', 'a')
('c', 'b')
('c', 'c')

itertools.premutations(iteravle[,r])

返回长度为r的排列
例如:


      1. `import itertools`
2. `for value in itertools.permutations('abc', 2):`
3. `print value`


    

输出:


      1. `('a', 'b')`
2. `('a', 'c')`
3. `('b', 'a')`
4. `('b', 'c')`
5. `('c', 'a')`
6. `('c', 'b')`


    

itertools.compress(data,selector)

返回selector为True的data对应元素
例如:


      1. `import itertools`
2. `for each in itertools.compress('abcd', [1, 0, 1, 0]):`
3. `print each`


    

输出:


      1. `a`
2. `c`


    

itertools.count(start=0,step=1)

返回以start开始,step递增的序列,无限递增
例如:


      1. `import itertools`
2. `for each in itertools.count(start=0, step=2):`
3. `print each`


    

输出:


      1. `1`
2. `2`
3. `3`
4. `.`
5. `.`


    

itertools.cycle(iterable)

将迭代器进行无限迭代
例如:


      1. `import itertools`
2. `for each in itertools.cycle('ab'):`
3. `print each`


    

输出:


      1. `a`
2. `b`
3. `a`
4. `b`
5. `.`
6. `.`


    

itertools.dropwhile(predicate, iterable)

直到predicate为真,就返回iterable后续数据, 否则drop掉
例如:


      1. `import itertools`
2. `for each in itertools.dropwhile(lambda x: x<5, [2,1,6,8,2,1]):`
3. `print each`


    

输出:


      1. `6`
2. `8`
3. `2`
4. `1`


    

itertools.groupby(iterable[,key])

返回一组(key,itera),key为iterable的值,itera为等于key的所有项
例如:


      1. `import itertools`
2. `for key, vale in itertools.groupby('aabbbc'):`
3. `print key, list(vale)`


    

输出:


      1. `a ['a', 'a']`
2. `b ['b', 'b', 'b']`
3. `c ['c']`


    

itertools.ifilter(predicate, iterable)

返回predicate结果为True的元素迭代器,如果predicate为None,则返回所有iterable中为True的项
例如:


      1. `import itertools`
2. `for value in itertools.ifilter(lambda x: x % 2, range(10)):`
3. `print value`


    

输出:


      1. `1`
2. `3`
3. `5`
4. `7`
5. `9`


    

itertools.ifilterfasle(predicate,iterable)

返回predicate为False的元素,如果predicate为None,则返回所有iterable中为False的项
例如:


      1. `import itertools`
2. `for value in itertools.ifilterfalse(lambda x: x % 2, range(10)):`
3. `print value`


    

输出:


      1. `0`
2. `2`
3. `4`
4. `6`
5. `8`


    

*itertools.imap(function,iterables)

相当于迭代器方式的map()
例如:


      1. `import itertools`
2. `for value in itertools.imap(lambda x, y: x+y, (1,2,3), (4,5,6)):`
3. `print value`


    

输出:


      1. `5`
2. `7`
3. `9`


    

itertools.islice(iterable, start,stop[,step])

相当于迭代器方式的切片操作
例如:


      1. `import itertools`
2. `for value in itertools.islice('abcdefg', 1, 4, 2):`
3. `print value`


    

输出:


      1. `b`
2. `d`


    

itertools.repeat(object,[,times])

不停的返回object对象,如果指定了times,则返回times次
例如:


      1. `import itertools`
2. `for value in itertools.repeat('a', 2):`
3. `print value`


    

输出:


      1. `a`
2. `a`


    

itertools.starmap(function,iterable)

返回function(iter)的值,iter为iterable的元素
例如:


      1. `import itertools`
2. `for value in itertools.starmap(lambda x, y: x * y, [(1, 2), (3, 4)]):`
3. `print value`


    

输出:


      1. `2`
2. `12`


    

itertools.takewhile(predicate,iterable)

如果predicate为真,则返回iterable元素,如果为假则不再返回,break.
例如:


      1. `import itertools`
2. `for value in itertools.takewhile(lambda x: x < 5, [1, 3, 5, 6]):`
3. `print value`


    

输出:


      1. `1`
2. `3`


    

picture.image


优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。
100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。
扫描下方二维码,注册 100offer,谈谈你对下一份工作的期待。一周内,收到 5-10 个满足你要求的好机会!


picture.image

§

§

Python中文社区

www.python-cn.com

picture.image

picture.image

致力于成为

国内最好的Python社区

欢迎加阿喵酱微信邀请进Python学习交流微信群

picture.image

0
0
0
0
评论
未登录
暂无评论