[英]How to overwrite array elements that have already been printed out in a previous print statement?
[英]python - dont print results that have already been printed
我有一个python脚本,可以打印出完美立方体的数字列表并加到1978。这是输出:
`[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]`
我只想要一次结果,而不是重复一次,因为我不在乎数字的顺序,因此从该样本中,我只希望2个答案而不是10个答案。有没有办法做到这一点?
编辑:同样,结果要花一天左右的时间写出来,因为有很多东西,所以我需要可以主动过滤的东西,所以速度更快
您可以对结果进行排序,将其转换为元组,然后将其添加到集合中以在打印之前删除重复项。 像这样:
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]]
一种方法是先添加到大列表,然后将列表转换为集合,因为您不必关心订单,也不需要重复。 完成后,您可以打印出列表。
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}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.