如何在 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]]
有两个问题:
- 函数b中的单词是引用,不是新变量!!
- child中的所有内容均为参考!!
我的代码:
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')
。
在下面的代码中,我希望得到:
[[1, 4, 6], [2, 3, 6], [2, 4, 5]]
但是 return :
[[1, 3, 5], [1, 3, 5], [1, 3, 5]]
有两个问题:
- 函数b中的单词是引用,不是新变量!!
- child中的所有内容均为参考!!
我的代码:
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')
。