在Python中,我需要得到整数列表的排列。我用了一个生成函数,它似乎得到了正确的结果。然后我尝试将迭代器转换为一个列表。但是,该列表不按顺序返回排列。我不知道有没有办法纠正它。谢谢。你知道吗
def permu(arr, start = 0):
if start == len(arr):
yield arr
for i in range(start, len(arr)):
arr[start], arr[i] = arr[i], arr[start]
for x in permu(arr, start + 1):
yield x
arr[start], arr[i] = arr[i], arr[start]
def wrapper(arr):
return list(permu(arr))
if __name__ == "__main__":
for p in permu([1, 2 ,3]):
print p
print wrapper([1, 2, 3])
结果就像——
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 2, 1]
[3, 1, 2]
[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]
您正在共享一个列表对象,并且只更改内容。
wrapper()
返回一个列表,其中有6个引用指向该列表:您可以生成副本:
或者可以使用^{} :
相关问题 更多 >
编程相关推荐