【问题标题】:How can I test if a list contains another list with particular items in Python?如何测试一个列表是否包含另一个包含 Python 中特定项目的列表?
【发布时间】:2010-11-05 18:33:08
【问题描述】:

我有一个列表列表,想检查它是否已经包含一个包含特定项目的列表。

从这个例子中一切都应该清楚了:

list = [[1,2],[3,4],[4,5],[6,7]]
for test in [[1,1],[1,2],[2,1]]:
  if test in list:
    print True
  else:
    print False

#Expected:
#        False
#        True
#        True

#Reality:
#        False
#        True
#        False

是否有一个函数可以比较列表中的项目而不管它们是如何排序的?

【问题讨论】:

标签: python list sorting


【解决方案1】:

你想要使用的是一个集合: set([1,2]) == set([2,1]) 返回 True。

所以

list = [set([1,2]),set([3,4]),set([4,5]),set([6,7])]
set([2,1]) in list

也返回 True。

【讨论】:

  • 顺便说一句,在 Python3 中——也许未来一代将真正能够使用的东西——你可以说[{1,2}, {3,4}, {4,5}, {6,7}]。
【解决方案2】:

如果他们真的是集合,使用集合类型

# This returns True 
set([2,1]) <= set([1,2,3])

&lt;= 在处理集合时表示“是”的子集。有关更多信息,请参阅operations on set types。

【讨论】:

    【解决方案3】:

    如果你想得到 [1,2] = [2,1] 你不应该使用列表。 Set 是正确的类型。在列表中,组件的顺序很重要,在集合中它们不重要。这就是为什么你没有得到“假真真”的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-20
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-21
      • 2018-01-25
      • 1970-01-01
      相关资源
      最近更新 更多