我试图随机交换一个列表中的两个索引,然后将该列表追加到另一个列表中。我写了以下代码:
import random
def swap(arr):
for i in range(len(arr)):
y = random.randrange(0,len(arr))
temp = arr[i]
arr[i] = arr[y]
arr[y] = temp
return arr
Array = [0,1,2,3]
results = []
for i in range(10):
a = []
a = swap(Array)
results.append(a)
print(results)
每次都会对数组进行混洗,但是当我在最后打印出结果时,每个索引的顺序都与附加到数组中的最后一个数组相同。例如,经过一个遍历的结果是: [[0,2,1,3],[0,2,1,3],[0,2,1,3],[0,2,1,3],[0,2,1,3] ,[0,2,1,3],[0,2,1,3],[0,2,1,3],[0,2,1,3],[0,2,1,3] ]
答案 0 :(得分:0)
您一直将相同的可变Array
对象传递给swap
函数。
因此,您的结果最终将同一对象列出10次。
如果您进行更改,则可以解决此问题:
a = swap(Array)
收件人:
a = swap(Array[:])
当您键入Array[:]
时,它将创建一个包含所有项目的新列表对象。
还要感谢您的问题的一些评论者。