[英]Python pandas: Taking values from one database, Assigning them another value and replacing them in a 2nd database
[英]Python Assigning value from one variable to another
我正在尝试实施某种本地搜索。 为此,我有两个数组,它们代表一个列表,我正在尝试对其进行优化。 因此,我有一个阵列作为当前最好的阵列,而我正在分析一个阵列。
一开始,我将对数组进行混洗,并将当前的最佳数组设置为混洗后的数组。
random.shuffle(self.matchOrder)
self.bestMatchOrder = self.matchOrder
然后,我在阵列中交换了一个随机的邻居对。 现在的问题是,当我交换self.matchOrder
中的值时, self.bestMatchOrder
的值self.bestMatchOrder
被交换。
a = self.matchOrder[index]
self.matchOrder[index] = self.matchOrder[index + 1]
self.matchOrder[index + 1] = a
“索引”作为参数提供给函数,它只是随机生成的数字。
我猜我在分配变量时做错了,但我不知道是什么。 因此,我该怎么做才能仅将数组的值分配给另一个数组,而不使它也应用相同的更改?
当您使用self.bestMatchOrder = self.matchOrder
,Python不会为self.bestMatchOrder
分配新的内存位置,而是都指向相同的内存位置。 并且知道列表是可变数据类型这一事实,因此,对self.matchOrder
所做的任何更改都将反映在self.bestMatchOrder
。
import copy
self.bestMatchOrder = copy.deepcopy(self.matchOrder)
但是,如果您使用线性列表或简单列表,则也可以使用self.bestMatchOrder = self.matchOrder[:]
但是,如果您使用的是嵌套列表,则deepcopy()
是正确的选择。
如果要复制列表,可以使用切片操作:
list_a = [1, 2, 3]
list_b = list_a[:]
list_a = [0, 0, 42]
print list_a # returns [0, 0, 42]
print list_b # returns [1, 2, 3], i.e. copied values
但是,如果您具有更复杂的结构,则应使用deepcopy
,如上文@anmol_uppal所建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.