首页 > 编程 > Python > 正文

详解python itertools功能

2020-02-15 21:20:40
字体:
来源:转载
供稿:网友

介绍

      itertools是python内置的模块,使用简单且功能强大,这里尝试汇总整理下,并提供简单应用示例;如果还不能满足你的要求,欢迎加入补充。

      使用只需简单一句导入:import itertools

chain()

      与其名称意义一样,给它一个列表如 lists/tuples/iterables,链接在一起;返回iterables对象。

letters = ['a', 'b', 'c', 'd', 'e', 'f']booleans = [1, 0, 1, 0, 0, 1]   print(list(itertools.chain(letters,booleans)))#   ['a', 'b', 'c', 'd', 'e', 'f', 1, 0, 1, 0, 0, 1]   print(tuple(itertools.chain(letters,letters[3:])))#   ('a', 'b', 'c', 'd', 'e', 'f', 'd', 'e', 'f')   print(set(itertools.chain(letters,letters[3:])))#   {'a', 'd', 'b', 'e', 'c', 'f'}      print(list(itertools.chain(letters,letters[3:])))#   ['a', 'b', 'c', 'd', 'e', 'f', 'd', 'e', 'f']   for item in list(itertools.chain(letters,booleans)):    print(item)

count()

  生成无界限序列,count(start=0, step=1) ,示例从100开始,步长为2,循环10,打印对应值;必须手动break,count()会一直循环。

  i = 0  for item in itertools.count(100,2):    i += 1    if i > 10 : break        print(item)  filterfalse ()   Python filterfalse(contintion,data) 迭代过滤条件为false的数据。如果条件为空,返回data中为false的项;booleans = [1, 0, 1, 0, 0, 1]numbers = [23, 20, 44, 32, 7, 12] print(list(itertools.filterfalse(None,booleans)))#   [0, 0, 0]print(list(itertools.filterfalse(lambda x : x < 20,numbers)))#  [23, 20, 44, 32]

compress()

返回我们需要使用的元素,根据b集合中元素真值,返回a集中对应的元素。

print(list(itertools.compress(letters,booleans)))# ['a', 'c', 'f']

starmap()

      针对list中的每一项,调用函数功能。starmap(func,list[]) ;

starmap(pow, [(2,5), (3,2), (10,3)]) --> 32 9 1000 >>> from itertools import *>>> x = starmap(max,[[5,14,5],[2,34,6],[3,5,2]])>>> for i in x:>>> print (i)14345repeat()repeat(object[, times]) 重复times次;repeat(10, 3) --> 10 10 10dropwhile()dropwhile(func, seq );当函数f执行返回假时, 开始迭代序列dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1takewhile()takewhile(predicate, iterable);返回序列,当predicate为true是截止。takewhile(lambda x: x<5, [1,4,6,4,1]) --> 1 4islice()islice(seq[, start], stop[, step]);返回序列seq的从start开始到stop结束的步长为step的元素的迭代器for i in islice("abcdef", 0, 4, 2):#a, c  print i

product()

product(iter1,iter2, ... iterN, [repeat=1]);创建一个迭代器,生成表示item1,item2等中的项目的笛卡尔积的元组,repeat是一个关键字参数,指定重复生成序列的次数

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表