如果我已经在lista_input
中添加了一些内容,那么每当在generabinario()
方法中修改参数arr时(例如:arr[I]=0/1),lista_input中的所有值都会以完全相同的方式修改
发生了什么事
这是我对给定程序的输出:
[[1, 1], [1, 1], [1, 1], [1, 1]]
当然,输出是[1,1]的序列,因为这是该方法对arr参数所做的最后一次修改
这就是代码:
lista_input = []
def generabinario(n, arr, i):
if i == n:
lista_input.append(arr)
return
arr[i] = 0
generabinario(n, arr, i + 1)
arr[i] = 1
generabinario(n, arr, i + 1)
if __name__ == "__main__":
weights = []
results = []
print("Inserisci il numero di pesi da inserire")
num = int(input())
print("Inserisci i pesi")
for i in range(0, num):
weights.append(int(input()))
inputs = [None] * num
generabinario(2, inputs, 0)
print(lista_input)
尝试:
arr[:]
创建一个全新的数组,而不是具有相同引用的“不同”数组。仅使用arr
,在每次调用中使用相同的数组,因为它们都具有相同的引用(即内存中的相同位置)。通过修改一个阵列,即修改此阵地,从而修改指向此阵地的所有阵列请参阅另一个问题的答案,了解什么是值和引用以及与之相关的行为:https://stackoverflow.com/a/986145/5446749
相关问题 更多 >
编程相关推荐