python - 将列表附加到结果列表会不断替换最后一个附加的列表

标签 python sorting

我想将列表 (arrCopy) 附加到列表列表(结果)。但是对于每个 append,当前列表都会替换之前的列表,因此列表列表中只有当前列表。

def insertionSort1(n, arr):
    arrCopy = arr[:]
    last = arr[-1]
    result = []

    for ind, num in enumerate(reversed(arr[:-1])):

        print('ind',ind, 'num',num, 'arrCopy', arrCopy, 'result',result)

        if num>=last:
            arrCopy[len(arr)-1-ind] = num
            result.append(arrCopy)
        else:
            arrCopy[len(arr)-1-ind] = last
            result.append(arrCopy)
            break

    print(result)

    for nums in result: 
        print(' '.join(str(n) for n in nums))

insertionSort1(5, [2, 4, 6, 8, 3])

最佳答案

arrCopy 作为引用附加,表示指向内存中数组的指针。如果内存中的数组发生变化,它会出现在它被引用的所有地方。

您需要存储数组的副本。你可以这样做: result.append(arrCopy[:]) 这将在内存中创建一个不受 arrCopy

更改影响的新数组

关于python - 将列表附加到结果列表会不断替换最后一个附加的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56068219/

相关文章:

python - Pandas - 条形图和折线图 - 日期时间轴

java - 我有一个 treemap<Integer, Person> 其中 Integer 是每个人的唯一属性,我想打印按另一个属性排序的元素

linux - GNU 排序 - 用于比较的默认算法是什么?

java - 使用compareTo()对字符串进行排序

python - 从列表中获取最接近的非零值的最佳方法

python - 为什么我的 winfo_screenwidth() 和 winfo_screenwidth() 得到一些奇怪的数字? Tkinter

python - Pandas :如何映射列表列中的值?

python - 如何删除包含其绑定(bind)方法列表的对象

python - 为什么我的堆排序不起作用?

reactjs - 通过单击列标题对表格进行排序