我需要存储元组。 每次我添加一个元组时,我都需要知道该元组是已添加还是已经存在,因为如果它已经存在(在列表/集合中)我可以打破内部 for 循环,所以我不必检查其他几个元组。
我的想法是使用集合,因为添加操作会检查元组是否已经存在。但是由于没有返回值,我必须自己检查元组是否已经在集合中。所以我会检查,添加操作会再次检查。
那么使用列表是否更快,因为我无论如何都要检查自己?所以我会检查元组是否已经在列表中,如果不在列表中,我会附加元组。
最佳答案
你应该使用一个集合,并测试成员资格:
if mytuple in set_of_tuples:
break # already added
set_of_tuples.add(mytuple)
测试集合的成员资格需要常数时间 (O(1)),而测试列表需要线性时间(O(N),列表中的每个元素都要测试)。
换句话说,您确实必须测试元组是否已经在数据结构中,但是针对列表的测试变得越来越慢,而针对集合的测试总是花费相同的时间,无论有多少元组已经在那里了。
关于Python - 特殊情况下的集合与列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148129/