我需要在 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
,它将多次打印相同的序列。我怎样才能防止这种情况?
我不知道该怎么办。有人有另一个想法如何防止打印两次?
跟踪已添加的内容:
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]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)