Python中的数组赋值
我正在创建一个随机值的数组,这样我可以进行不同的排序,看看它们之间的相互作用。问题是,当我对一个数组进行排序后,我就不能再使用这个数组了,因为它已经被排序过了。我似乎不太明白 Python 中的赋值是怎么回事。在我看来,把一个数组赋值给另一个数组就像是共享了同一个内存地址。有人能告诉我 Python 中数组赋值是怎么回事吗?并解释一下为什么我的代码不工作。
这是我调用插入排序的地方。我的目标是让 insertion_sort_array 正确排序,而 random_test_array_10 保持未排序状态。
for i in random_array_10:
print i
time.sleep(2)
print "Insertion Sort"
with timer.Timer() as t:
insertion_sort_array = sorts.insertion_sort(random_array_10).isort()
print t.interval
for i in random_array_10:
print i
这是我的插入排序类
class insertion_sort():
def __init__(self, array):
self.array = array
def isort(self):
for i in range(1, len(self.array)):
temp = self.array[i]
k = i
while k > 0 and temp < self.array[k-1]:
self.array[k] = self.array[k-1]
k = k-1
self.array[k] = temp
return self.array
1 个回答
1
这里的 self.array
和 array
都指向同一个对象,也就是同一个可变的列表。如果你想要复制这个列表,可以在 __init__
方法里使用 list()
这个构造函数:
self.array = list(array)
这样做的好处是,你可以让其他可迭代的对象也能作为插入排序的输入。