Python-在特殊情况下设置与列表

Python-在特殊情况下设置与列表,python,performance,list,set,contains,Python,Performance,List,Set,Contains,我需要存储元组。 每次我添加一个元组时,我都需要知道该元组是添加的还是已经存在的,因为如果它已经存在(在列表/集合中),我可以中断内部for循环,因此我不必检查其他几个元组 我的想法是使用集合,因为add操作检查元组是否已经存在。但是由于没有返回值,我必须检查自己元组是否已经在集合中。所以我会检查,添加操作会再次检查 因为我必须检查自己,所以使用列表更快吗?因此,我会检查元组是否已经在列表中,如果没有,我只会附加元组。您应该使用一个集合,并测试成员资格: if mytuple in set_of

我需要存储元组。 每次我添加一个元组时,我都需要知道该元组是添加的还是已经存在的,因为如果它已经存在(在列表/集合中),我可以中断内部for循环,因此我不必检查其他几个元组

我的想法是使用集合,因为add操作检查元组是否已经存在。但是由于没有返回值,我必须检查自己元组是否已经在集合中。所以我会检查,添加操作会再次检查


因为我必须检查自己,所以使用列表更快吗?因此,我会检查元组是否已经在列表中,如果没有,我只会附加元组。

您应该使用一个集合,并测试成员资格:

if mytuple in set_of_tuples:
    break  # already added

set_of_tuples.add(mytuple)
针对集合的成员身份测试需要固定时间(O(1)),而针对列表的测试需要线性时间(O(N),针对列表中的每个元素进行测试)


换句话说,您确实需要测试元组是否已经在数据结构中,但是针对列表的测试变得越来越慢,而针对集合的测试总是花费相同的时间,不管其中已经有多少元组。

您不需要迭代列表。您可以使用in运算符检查元组是否存在。如果没有,您可以直接附加它。