我编写了以下代码,用于在递归的帮助下生成特定数量元素的所有可能组合:
global_values = []
parameters = [1,2,3,4,5,6]
content = ["x","y","v","sd"]
def rec(values, depth):
if(depth == 0):
global_values.append(values)
print values
return
for i in range(0,len(parameters)):
values.append(parameters[i])
rec(values,depth-1)
values.pop()
return
rec([],len(content))
print "!!!!----------!!!!"
print global_values
“print”值“”语句打印正确的结果,但我想将此结果附加到全局列表。为什么这不起作用?
使用
parameters = [1,2,3]
content = ["x","y"]
我得到了输出:
[1, 1]
[1, 2]
[1, 3]
[2, 1]
[2, 2]
[2, 3]
[3, 1]
[3, 2]
[3, 3]
!!!!----------!!!!
[[], [], [], [], [], [], [], [], []]
但我希望最后一个列表填充之前打印的值。
答案 0 :(得分:3)
当您将values
追加到global_values
时,列表values
中有数字。但是,您稍后删除这些数字,因此附加到global_values
的列表现在为空。出现此问题的原因是,只有一个列表values
不断重复使用。
要明白我的意思,请尝试:
list1 = []
list2 = [5,9]
list1.append(list2)
list2.pop() # Because list2 is inside list1, this changes the contents of list1
print list1 # Prints [[5]]
附加values
使用global_values.append(values[:])
的副本。