我需要在python中打印所有数字列表。
到目前为止,我写了这个:def lists(listNum, i):
if i == len(listNum) - 1:
print listNum
else:
for j in range(i, len(listNum)):
listNum[i], listNum[j] = listNum[j], listNum[i]
lists(listNum, i + 1)
listNum[i], listNum[j] = listNum[j], listNum[i]
lists([1, 2, 3], 0)
如何只打印一次列表?如果列表具有重复元素,例如1,1,2
,它会多次打印相同的序列。我怎么能阻止这个?
我不知道该怎么做。有人知道如何防止两次打印?
答案 0 :(得分:2)
跟踪已添加的内容:
def permute(a, i, seen=set()):
if i == len(a):
if tuple(a) not in seen:
seen.add(tuple(a))
print(a)
else:
for j in xrange(i,len(a)):
a[i], a[j] = a[j], a[i]
permute(a, i + 1,seen)
a[i], a[j] = a[j], a[i]
print(permute([1, 1, 3], 0))
[1, 1, 3]
[1, 3, 1]
[3, 1, 1]