-
Helenr
Python为此提供的性能函数是set.issubset。但是,它确实有一些限制,使其不清楚是否是您问题的答案。列表可能包含多个项目并具有特定顺序。一套没有。为了实现高性能集,只能在可哈希对象上工作。您是在询问子集还是子序列(这意味着您需要一个字符串搜索算法)?在许多测试中,两个列表中的两个列表是否相同?列表中包含哪些数据类型?而且,这是否需要列出清单?您的其他帖子与字典和列表相交,使类型更清晰,并且确实推荐使用字典键视图来实现类似集合的功能。在那种情况下,之所以可以工作是因为字典键的行为就像一个集合(以至于在我们使用Python进行集合之前,我们都使用字典)。一个人想知道问题如何在三个小时内变得不那么具体。
-
凤凰求蛊
>>> a = [1, 3, 5]>>> b = [1, 3, 5, 8]>>> c = [3, 5, 9]>>> set(a) <= set(b)True>>> set(c) <= set(b)False>>> a = ['yes', 'no', 'hmm']>>> b = ['yes', 'no', 'hmm', 'well']>>> c = ['sorry', 'no', 'hmm']>>> >>> set(a) <= set(b)True>>> set(c) <= set(b)False
-
哔哔one
假设项目是可哈希的>>> from collections import Counter>>> not Counter([1, 2]) - Counter([1])False>>> not Counter([1, 2]) - Counter([1, 2])True>>> not Counter([1, 2, 2]) - Counter([1, 2])False如果您不在乎重复的项目,例如 [1, 2, 2]并且[1, 2]然后只需使用:>>> set([1, 2, 2]).issubset([1, 2])True在相交之后在较小列表上测试相等性是最快的方法吗?.issubset将是最快的方法。在测试之前检查长度issubset不会提高速度,因为您仍然有O(N + M)个项目要进行迭代和检查。