2

我目前正在编写一个使用 itertools 的程序,其中一个似乎无法正常运行。我希望确定排列函数输出的列表长度的输入等于它从中生成输出的列表的长度。换句话说,我有

import itertools

b = 0
c = 9
d = [0,1,2]
e = len(d)


while b < c:
        d.append(b)
        b = b+1

print([x for x in itertools.permutations(d,e)])

我希望这可以生成 d 的所有可能的排列,这些排列等于这个长度。我一直在尝试这个,似乎第二个确定器必须是一个整数。我什至尝试创建一个新变量 f,f = int(e)然后在 print 语句中将 e 替换为 f,但没有成功。有了这些,我得到的只是[()]

谢谢你的帮助。

4

1 回答 1

4

您需要在构建列表e 后进行设置。len(d)返回一个值,而不是对列表长度的引用。

d = range(0,9)  # build an arbitrary list here
                # this creates a list of numbers: [0,1,2,3,4,5,6,7,8]
e = len(d)
print list(itertools.permutations(d, e))

请注意,排列的数量非常大,因此将它们全部存储在列表中会消耗大量内存 - 你最好这样做:

d = range(0,9)
e = len(d)
for p in itertools.permutations(d, e):
    print p
于 2013-10-15T00:38:24.880 回答