我想将6的所有排列写入4的块中。当我执行打印(模板)时,它实际上打印了所需的排列: Permutations work fine as seen on the image
然而,当我将它们附加到big_template并打印big_template(我想要包含所有排列的列表)时,所有打印的都是[6,6,6,6]的列表。
Big_template is not as expected
这是我的代码:
template = ['' for i in range(4)]
big_template = []
j=0
for i in range(1,7):
template[j]=i
for i in range(1,7):
template[j+1]=i
for i in range(1,7):
template[j+2]=i
for i in range(1,7):
template[j+3]=i
print(template)
big_template.append(template)
print(big_template)
我的问题是我做错了什么。此外,我想将此过程扩展到任何数字框中的6的排列。通过我的方法,我将拥有尽可能多的循环作为框中的条目。如何使用递归函数来完成?
干杯。
答案 0 :(得分:0)
考虑使用itertools中的方法,例如permutation。
在您的示例中,big_template
的每个元素都是同一个对象template
,您可以使用is operator看到。
print(big_template[0] is template)
print(big_template[0] is big_template[1])
都会产生True
。这解释了为什么big_template
仅包含[6,6,6,6]
,这是template
占用的最后一个值。
有关此主题的更多信息,请参阅Python initializing a list of lists。
要使代码按原样运行,您应致电copy
:big_template.append(template.copy())
。
但你真的应该使用排列。