Python中的数组赋值

0 投票
1 回答
3645 浏览
提问于 2025-04-18 14:28

我正在创建一个随机值的数组,这样我可以进行不同的排序,看看它们之间的相互作用。问题是,当我对一个数组进行排序后,我就不能再使用这个数组了,因为它已经被排序过了。我似乎不太明白 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.arrayarray 都指向同一个对象,也就是同一个可变的列表。如果你想要复制这个列表,可以在 __init__ 方法里使用 list() 这个构造函数:

self.array = list(array)

这样做的好处是,你可以让其他可迭代的对象也能作为插入排序的输入。

撰写回答