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)