迭代数字列表

时间:2015-04-09 17:02:53

标签: python

我有一个包含13个数字的列表,每个数字可以等于1到9之间的任何数字。

我需要在列表中查看这些数字的所有可能变体:number1=1number2=1/2/3/4/5/6/7/8/9(不包括0),依此类推。然后我需要对number1=2等进行同样的操作。

我无法理解如何去做 - 显然是通过'for'循环?

for x in range(1,10):
    A=[x for i in range(13)]
for i in range(len(A)):
    for t in range(1,10):
        A[i]=t
        print A

这不行。

1 个答案:

答案 0 :(得分:1)

我建议使用itertools.product

>>> from itertools import product
>>> list(product(range(1, 10), repeat=2))
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (1, 8), (1, 9), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (2, 7), (2, 8), (2, 9), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6), (4, 7), (4, 8), (4, 9), (5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6), (5, 7), (5, 8), (5, 9), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6), (6, 7), (6, 8), (6, 9), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 6), (7, 7), (7, 8), (7, 9), (8, 1), (8, 2), (8, 3), (8, 4), (8, 5), (8, 6), (8, 7), (8, 8), (8, 9), (9, 1), (9, 2), (9, 3), (9, 4), (9, 5), (9, 6), (9, 7), (9, 8), (9, 9)]

但是,我建议不要为13个号码做这个。为什么?看看:

>>> len(list(product(range(1, 10), repeat=2)))
81

9 ^ 2 = 81.所以要计算它为13,你需要计算长度为13的9 ^ 13个元组。这需要相当长的时间。

幸运的是itertools.product返回一个生成器对象,因此如果您愿意,可以逐个遍历这些值。只是不要试图把它变成一个列表。