我有一个python脚本,可以打印出完美立方体的数字列表并加到1978。这是输出:
if any(c not in set('atcg') for c in Tester):
...
我只想要一次结果,而不是重复一次,因为我不在乎数字的顺序,因此从此样本中,我只希望2个答案而不是10个答案。有没有办法做到这一点?
编辑:而且,结果要花一天左右的时间写出来,因为有很多东西,所以我需要可以主动过滤的东西,这样才能更快
答案 0 :(得分:0)
您可以对结果进行排序,将其转换为元组,然后将其添加到集合中以在打印之前删除重复项。像这样:
cube_lists = [ [1, 27, 729, 512, 8, 512, 1, 8],
[1, 27, 729, 512, 8, 512, 8, 1],
[1, 27, 729, 512, 512, 1, 8, 8],
[1, 27, 729, 512, 512, 8, 1, 8],
[1, 27, 729, 512, 512, 8, 8, 1],
[1, 64, 8, 64, 125, 512, 512, 512],
[1, 64, 8, 64, 512, 125, 512, 512],
[1, 64, 8, 64, 512, 512, 125, 512],
[1, 64, 8, 64, 512, 512, 512, 125],
[1, 64, 8, 125, 64, 512, 512, 512]
]
result = set([tuple(sorted(r)) for r in cube_lists])
print([list(r) for r in result])
此打印:
[[1, 1, 8, 8, 27, 512, 512, 729], [1, 8, 64, 64, 125, 512, 512, 512]]
答案 1 :(得分:0)
执行此操作的一种方法是先添加到大列表,然后将列表转换为集合,因为您不必关心顺序,也不需要重复。完成后,您可以打印出列表。
list_with_duplicates = [1, 27, 729, 512, 8, 512, 1, 8, 1, 27, 729, 512, 8, 512, 8, 1, 1, 27, 729, 512, 512, 1, 8, 8, 1, 27, 729, 512, 512, 8, 1, 8, 1, 27, 729, 512, 512, 8, 8, 1, 1, 64, 8, 64, 125, 512, 512, 512, 1, 64, 8, 64, 512, 125, 512, 512, 1, 64, 8, 64, 512, 512, 125, 512, 1, 64, 8, 64, 512, 512, 512, 125, 1, 64, 8, 125, 64, 512, 512, 512]
list_without_duplicates = set(list_with_duplicates)
print(list_without_duplicates) # Will print {512, 1, 64, 8, 729, 27, 125}`
如果需要继续向集合中添加内容,可以使用.add()函数到集合中。
list_without_duplicates.add(1)
print(list_without_duplicates) #Will print (same set) {512, 1, 64, 8, 729, 27, 125}
list_without_duplicates.add(2)
print(list_without_duplicates) #Will print (new set) {512, 1, 64, 2, 8, 729, 27, 125}