如何在 python 中分配新数组而不是构建指针

how to assign new array instead of build pointer in python

在下面的代码中,我希望得到:

[[1, 4, 6], [2, 3, 6], [2, 4, 5]]

但是 return :

[[1, 3, 5], [1, 3, 5], [1, 3, 5]]

有两个问题:

我的代码:

def b(word,i):
    word[i] = word[i]-1
    return word
def a(individual):
    child = []
    for i in range(len(individual)):
        child.append(b(individual,i))
    return child
print(a([2,4,6,8]))

只需将您的 b 函数更改为:

def b(word,i):
    tmp = word.copy()
    tmp[i] = tmp[i]-1
    return tmp

因为当你实际更改 individual 列表时,它会在整个程序中发生变化,我的意思是你的代码是写的但是当你将 2 更改为 1 它会改变所有在程序上。为了更好地理解,在附加后添加一个 print('child')