专栏名称: Python中文社区
致力于成为国内最好的Python开发者学习交流平台,这里有关于Python的国内外最新消息,每日推送有趣有料的技术干货和社区动态。 官方网站:www.python-cn.com
目录
相关文章推荐
Python爱好者社区  ·  史上最强!神经网络杀疯了 ·  3 天前  
Python开发者  ·  Python协会曝出丑闻:49万元被“熟人” ... ·  6 天前  
Python爱好者社区  ·  某211副教授自爆“评职称”历程:评审内幕堪 ... ·  1 周前  
Python爱好者社区  ·  48k*15薪!进字节了! ·  6 天前  
Python爱好者社区  ·  1885页Python电子书 ·  1 周前  
51好读  ›  专栏  ›  Python中文社区

Python标准库(1) — itertools模块

Python中文社区  · 公众号  · Python  · 2017-02-25 22:57

正文

專 欄


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: x5, [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中文社区
www.python-cn.com

致力于成为

国内最好的Python社区


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


推荐文章
Python爱好者社区  ·  史上最强!神经网络杀疯了
3 天前
Python爱好者社区  ·  48k*15薪!进字节了!
6 天前
Python爱好者社区  ·  1885页Python电子书
1 周前
虎嗅APP  ·  关于房价,你可以看得更透彻
7 年前
庞门正道  ·  SONY,你家缺美工吗?
7 年前
笑点研究所  ·  吓死我了!看完了我想打人!
7 年前