我想将列表 (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/