Python随机列表

时间:2019-02-26 23:19:53

标签: python-3.x

我试图随机交换一个列表中的两个索引,然后将该列表追加到另一个列表中。我写了以下代码:

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] ]

1 个答案:

答案 0 :(得分:0)

您一直将相同的可变Array对象传递给swap函数。
因此,您的结果最终将同一对象列出10次。

如果您进行更改,则可以解决此问题:

a = swap(Array)

收件人:

a = swap(Array[:])

当您键入Array[:]时,它将创建一个包含所有项目的新列表对象。

还要感谢您的问题的一些评论者。