itertools.product()函数生成列表或类列表值(如 字符串或者元组)里的每项的每种可能组合。
返回itertools.product对象值,需要把这个值传给列表
这种组合又名笛卡尔乘积。
exampl1:(3^4 = 81种组合)
>>> itertools.product(‘ABC‘, repeat=4) <itertools.product object at 0x011F8CC8> >>> list(itertools.product(‘ABC‘, repeat=4)) [(‘A‘, ‘A‘, ‘A‘, ‘A‘), (‘A‘, ‘A‘, ‘A‘, ‘B‘), (‘A‘, ‘A‘, ‘A‘, ‘C‘), (‘A‘, ‘A‘, ‘B‘, ‘A‘), (‘A‘, ‘A‘, ‘B‘, ‘B‘), (‘A‘, ‘A‘, ‘B‘, ‘C‘), (‘A‘, ‘A‘, ‘C‘, ‘A‘), (‘A‘, ‘A‘, ‘C‘, ‘B‘), (‘A‘, ‘A‘, ‘C‘, ‘C‘), (‘A‘, ‘B‘, ‘A‘, ‘A‘), (‘A‘, ‘B‘, ‘A‘, ‘B‘), (‘A‘, ‘B‘, ‘A‘, ‘C‘), (‘A‘, ‘B‘, ‘B‘, ‘A‘), (‘A‘, ‘B‘, ‘B‘, ‘B‘), (‘A‘, ‘B‘, ‘B‘, ‘C‘), (‘A‘, ‘B‘, ‘C‘, ‘A‘), (‘A‘, ‘B‘, ‘C‘, ‘B‘), (‘A‘, ‘B‘, ‘C‘, ‘C‘), (‘A‘, ‘C‘, ‘A‘, ‘A‘), (‘A‘, ‘C‘, ‘A‘, ‘B‘), (‘A‘, ‘C‘, ‘A‘, ‘C‘), (‘A‘, ‘C‘, ‘B‘, ‘A‘), (‘A‘, ‘C‘, ‘B‘, ‘B‘), (‘A‘, ‘C‘, ‘B‘, ‘C‘), (‘A‘, ‘C‘, ‘C‘, ‘A‘), (‘A‘, ‘C‘, ‘C‘, ‘B‘), (‘A‘, ‘C‘, ‘C‘, ‘C‘), (‘B‘, ‘A‘, ‘A‘, ‘A‘), (‘B‘, ‘A‘, ‘A‘, ‘B‘), (‘B‘, ‘A‘, ‘A‘, ‘C‘), (‘B‘, ‘A‘, ‘B‘, ‘A‘), (‘B‘, ‘A‘, ‘B‘, ‘B‘), (‘B‘, ‘A‘, ‘B‘, ‘C‘), (‘B‘, ‘A‘, ‘C‘, ‘A‘), (‘B‘, ‘A‘, ‘C‘, ‘B‘), (‘B‘, ‘A‘, ‘C‘, ‘C‘), (‘B‘, ‘B‘, ‘A‘, ‘A‘), (‘B‘, ‘B‘, ‘A‘, ‘B‘), (‘B‘, ‘B‘, ‘A‘, ‘C‘), (‘B‘, ‘B‘, ‘B‘, ‘A‘), (‘B‘, ‘B‘, ‘B‘, ‘B‘), (‘B‘, ‘B‘, ‘B‘, ‘C‘), (‘B‘, ‘B‘, ‘C‘, ‘A‘), (‘B‘, ‘B‘, ‘C‘, ‘B‘), (‘B‘, ‘B‘, ‘C‘, ‘C‘), (‘B‘, ‘C‘, ‘A‘, ‘A‘), (‘B‘, ‘C‘, ‘A‘, ‘B‘), (‘B‘, ‘C‘, ‘A‘, ‘C‘), (‘B‘, ‘C‘, ‘B‘, ‘A‘), (‘B‘, ‘C‘, ‘B‘, ‘B‘), (‘B‘, ‘C‘, ‘B‘, ‘C‘), (‘B‘, ‘C‘, ‘C‘, ‘A‘), (‘B‘, ‘C‘, ‘C‘, ‘B‘), (‘B‘, ‘C‘, ‘C‘, ‘C‘), (‘C‘, ‘A‘, ‘A‘, ‘A‘), (‘C‘, ‘A‘, ‘A‘, ‘B‘), (‘C‘, ‘A‘, ‘A‘, ‘C‘), (‘C‘, ‘A‘, ‘B‘, ‘A‘), (‘C‘, ‘A‘, ‘B‘, ‘B‘), (‘C‘, ‘A‘, ‘B‘, ‘C‘), (‘C‘, ‘A‘, ‘C‘, ‘A‘), (‘C‘, ‘A‘, ‘C‘, ‘B‘), (‘C‘, ‘A‘, ‘C‘, ‘C‘), (‘C‘, ‘B‘, ‘A‘, ‘A‘), (‘C‘, ‘B‘, ‘A‘, ‘B‘), (‘C‘, ‘B‘, ‘A‘, ‘C‘), (‘C‘, ‘B‘, ‘B‘, ‘A‘), (‘C‘, ‘B‘, ‘B‘, ‘B‘), (‘C‘, ‘B‘, ‘B‘, ‘C‘), (‘C‘, ‘B‘, ‘C‘, ‘A‘), (‘C‘, ‘B‘, ‘C‘, ‘B‘), (‘C‘, ‘B‘, ‘C‘, ‘C‘), (‘C‘, ‘C‘, ‘A‘, ‘A‘), (‘C‘, ‘C‘, ‘A‘, ‘B‘), (‘C‘, ‘C‘, ‘A‘, ‘C‘), (‘C‘, ‘C‘, ‘B‘, ‘A‘), (‘C‘, ‘C‘, ‘B‘, ‘B‘), (‘C‘, ‘C‘, ‘B‘, ‘C‘), (‘C‘, ‘C‘, ‘C‘, ‘A‘), (‘C‘, ‘C‘, ‘C‘, ‘B‘), (‘C‘, ‘C‘, ‘C‘, ‘C‘)] >>> import pprint
example2:(8^5 = 32768)
>>> mylist = list(itertools.product(range(8), repeat=5)) >>> len(mylist) 32768 >>>
注意遍历次序:
>>> list(itertools.product(range(3), repeat=3)) [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 1, 0), (0, 1, 1), (0, 1, 2), (0, 2, 0), (0, 2, 1), (0, 2, 2), (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 1, 0), (1, 1, 1), (1, 1, 2), (1, 2, 0), (1, 2, 1), (1, 2, 2), (2, 0, 0), (2, 0, 1), (2, 0, 2), (2, 1, 0), (2, 1, 1), (2, 1, 2), (2, 2, 0), (2, 2, 1), (2, 2, 2)] >>>
原文:https://www.cnblogs.com/PiaYie/p/13508694.html