常用函数及说明
compress (data, selectors) |
#compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F |
chain (*iterables) |
# chain('ABC', 'DEF') --> A B C D E F |
filterfalse (predicate, iterable) |
# filterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8 |
accumulate (iterable[, func]) |
#accumulate([1,2,3,4,5]) --> 1 3 6 10 15 |
permutations (iterable, r=None) |
# permutations('ABCD', 2) --> AB AC AD BA BC BD CA CB CD DA DB DC # permutations(range(3)) --> 012 021 102 120 201 210 |
combinations (iterable, r) |
# combinations('ABCD', 2) --> AB AC AD BC BD CD # combinations(range(4), 3) --> 012 013 023 123 |
product (*iterables, repeat=1) |
# product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111 |
groupby (iterable, key=None) |
为每个唯一键生成一个(key,sub-iterator) |
标准库itertools模块中有一组用于许多常见数据算法的生成器。例如,groupby可以接受任何序列和一个函数。它根据函数的返回值对序列中的连续元素进行分组。下面是一个例子:
import itertools
first_letter = lambda x: x[0]
names=["Alan","Adam","Wes",'Will',"Albert","Steven"]
for letter,names in itertools.groupby(names,first_letter):
print(letter,list(names))#names is generator
输出:
A ['Alan', 'Adam']
W ['Wes', 'Will']
A ['Albert']
S ['Steven']
accumulate举例:
>>> from itertools import accumulate
>>> import operator
>>> data =[2,4,5,0,2,3]
>>> list(accumulate(data,operator.mul))
[2, 8, 40, 0, 0, 0]
>>> list(accumulate(data,max))
[2, 4, 5, 5, 5, 5]
>>> list(accumulate([1,2,3,4,5,6],lambda x,y:x*y if x>4 else x+y))
[1, 3, 6, 24, 120, 720]
filterfalse举例:
import itertools
first_letter = lambda x: x[0]=='A'
names=["Alan","Adam","Wes",'Will',"Albert","Steven"]
print(list(itertools.filterfalse(first_letter,names)))
输出:
['Wes', 'Will', 'Steven']