專 欄
❈
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`
优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。
100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。
扫描下方二维码,注册 100offer,谈谈你对下一份工作的期待。一周内,收到 5-10 个满足你要求的好机会!
§
§
Python中文社区
致力于成为
国内最好的Python社区
欢迎加阿喵酱微信邀请进Python学习交流微信群
