我正在做一个输入一系列数字的程序,并将其中的6个数字作为彩票号码的不同组合。当我创建不同的组合时,我想删除重复项,以便每个组合只打印一次。 这是我希望发生的:在Python中删除重复列表
combo_list = [1 2 3 4 5 6 7]
和输出应该是:
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7
我正在使用的代码是:
final = []
for sublist in combo_list:
if sublist not in final:
final.append(sublist)
for item in final:
item = (sorted(item, key=int))
print (' '.join(str(n) for n in item))
不过,我得到的输出当我使用代码时有很多重复项:
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 5 6
1 2 3 4 6 7
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 5 6
1 2 3 5 6 7
1 2 3 4 5 7
1 2 3 5 6 7
1 2 3 4 5 6
1 2 3 4 6 7
1 2 3 4 5 6
1 2 3 5 6 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 4 5 7
1 2 3 5 6 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 3 4 5 6
.
.
.
任何想法,我必须改变每个组合只能打印一次?
您的算法似乎有缺陷 - 你没有接近问题的权利。已知组合的数量,python作为[itertools](http://docs.python.org/2/library/itertools.html)库以更高效的方式处理此问题。 – 2013-05-27 02:38:45
想想你是否可以修改你的代码,以便不首先生成重复项。 –