itertoors

来源:互联网 发布:万税 知乎 编辑:程序博客网 时间:2024/06/08 19:18

关于itertools本文写的很清晰:
http://www.cnblogs.com/cython/articles/2169009.html

使用这个库,可以计算常见的各种多个数求和等于某个数的题,可以方便计算出来。

计算所有和为20的三个正整数,并打印出来

from itertools import productl = []for each in product(range(1,19),repeat = 3):    if sum(each) == 20:        print(each)

部分结果如下,共返回171个结果

(1, 1, 18)(1, 2, 17)(1, 3, 16)(1, 4, 15)(1, 5, 14)(1, 6, 13)(1, 7, 12)(1, 8, 11)(1, 9, 10)(1, 10, 9)(1, 11, 8)

查看itertoors product源码
product(item1, item2, … itemN, [repeat=1]):
创建一个迭代器,生成表示item1,item2等中的项目的笛卡尔积的元组,repeat是一个关键字参数,指定重复生成序列的次数。

def product(*args, **kwds):     # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy     # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111     pools = map(tuple, args) * kwds.get('repeat', 1)     result = [[]]     for pool in pools:         result = [x+[y] for x in result for y in pool]     for prod in result:         yield tuple(prod)
原创粉丝点击