python-不打印已经打印的结果

时间:2018-10-06 01:22:38

标签: python python-3.x

我有一个python脚本,可以打印出完美立方体的数字列表并加到1978。这是输出:

if any(c not in set('atcg') for c in Tester):
    ...

我只想要一次结果,而不是重复一次,因为我不在乎数字的顺序,因此从此样本中,我只希望2个答案而不是10个答案。有没有办法做到这一点?

编辑:而且,结果要花一天左右的时间写出来,因为有很多东西,所以我需要可以主动过滤的东西,这样才能更快

2 个答案:

答案 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}