在数据处理中还比较常见,整理了一下。内容主要来自 python 官方文档,更多详细,请参考这里。
这是一个python内建的模块,主要用于实现迭代。灵感来源于APL、Haskell and SML等语言。
特点:以纯python的方式来实现,速度较快。
iterator | arguments | results | example |
---|---|---|---|
count() | start, [step] | start, start+step, start+2*step, … | count(10) --> 10 11 12 13 14 … |
cycle() | p | p0, p1, … plast, p0, p1, … | cycle(‘ABCD’) --> A B C D A B C D … |
repeat() | elem [,n] | elem, elem, elem, … endlessly or up to n times | repeat(10, 3) --> 10 10 10 |
函数较多。比如accumulate()
返回累加的值的迭代,
比较有趣,主要有四个
Iterator | Arguments | Results |
---|---|---|
product() | p, q, … [repeat=1] | cartesian product, equivalent to a nested for-loop类似于做笛卡尔积 |
permutations() | p[, r] | r-length tuples, all possible orderings, no repeated elements r个元素的全排列 |
combinations() | p, r | r-length tuples, in sorted order, no repeated elements r个元素的组合排列 |
combinations_with_replacement() | p, r | r-length tuples, in sorted order, with repeated elements 允许放回的组合排列 |
product(‘ABCD’, repeat=2) | AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD | |
permutations(‘ABCD’, 2) | AB AC AD BA BC BD CA CB CD DA DB DC | |
combinations(‘ABCD’, 2) | AB AC AD BC BD CD | |
combinations_with_replacement(‘ABCD’, 2) | AA AB AC AD BB BC BD CC CD DD |
求质数序列中1,3,5,7,9,11,13,15三个数之和为35的三个数;
def get_three_data(data_list,amount):
for data in list(itertools.combinations(data_list, 3)):
if sum(data) == amount:
print(data)
#(7, 13, 15)
#(9, 11, 15)