我正在尝试编写一个在 Python 2.7.3 中随机化列表的函数。这样做的代码是这样的:
import random
def randomize_list(l, new=[]):
if not len(l):
return new
print id(l), id(new)
l1 = list(l)
new.append(l1.pop(
random.choice(list(range(len(l1))))
))
return randomize_list(l1, new)
如果我导入此函数并多次调用它,id(new)
, 总是返回相同的值,并且每次后续调用都会randomize_function
将项目添加到先前调用的结果中。因此,例如:
>>> a = [1,2,3,4]
>>> randomize_list(a)
35192344 35234016
16126176 35234016
16126536 35234016
16126896 35234016
[2,3,4,1]
>>> randomize_list(a)
35192344 35234016
35193488 35234016
35193344 35234016
16126608 35234016
[2,3,4,1,3,2,1,4]
... and so on
为什么会发生这种情况,我该如何解决?