【发布时间】:2020-09-11 19:18:34
【问题描述】:
我有这个插入排序算法,它产生j、i、key 和A。所有这些我想存储在一个单独的列表中。但是当我尝试存储 A 时,嵌套列表会返回这个。
store_j = []
store_i = []
store_key = []
store_A = []
def insertion_sort(A):
for j in range(1, len(A)):
key = A[j]
i = j - 1
store_j.append(j)
store_i.append(i)
store_key.append(key)
store_A.append(A)
while i >= 0 and A[i] > key:
A[i + 1] = A[i]
i = i - 1
A[i + 1] = key
print(store_i)
print(store_j)
print(store_key)
print(store_A)
a = [5, 1, 3, 4, 2]
insertion_sort(a)
[0, 1, 2, 3]
[1, 2, 3, 4]
[1, 3, 4, 2]
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
我希望最后一个 store_A 像这样输出
[[5, 1, 3, 4, 2][1, 5, 3, 4, 2][1, 3, 5, 4, 2][1, 3, 4, 5, 2][1, 2, 3, 4, 5]]
所以我最终可以用存储的值制作一个表格
类似的东西
j | i | key| A |
1 | 0 | 1 |[5, 1, 3, 4, 2]|
2 | 1 | 3 |[1, 5, 3, 4, 2]|
3 | 2 | 4 |[1, 3, 5, 4, 2]|
4 | 3 | 2 |[1, 3, 4, 5, 2]|
4 | 0 | 2 |[1, 2, 3, 4, 5]|
【问题讨论】:
-
添加切片以复制列表,否则您只是将同一列表的别名附加到结果中:
store_A.append(A[:])。 -
您的列表中有 4 次相同的对象。要创建副本,请使用
store_A.append(list(A))。另见:stackoverflow.com/questions/2612802/… -
是的,现在可以了。感谢您的帮助
标签: python python-3.x arraylist datatable nested-lists