2010-11-05 119 views
4

我有一个列表的列表,并希望检查它是否已经包含具有特定项目的列表。如何测试一个列表是否包含另一个包含Python中特定项目的列表?

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

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 

是否存在,无论列表的项目比较它们是如何排序的功能?

+0

[使用Python在另一个列表中搜索列表的值]可能的重复(http://stackoverflow.com/questions/1695452/searching-values-of-a-list-in-another-list-using-python ) – 2010-11-05 18:35:37

+0

在...中进行测试:在列表中打印排序(测试) – 2010-11-05 20:37:14

回答

6

你想使用的是一组: 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。

+1

顺便说一下,在Python3中 - 也许未来一代实际上可以使用的东西 - 您可以说'[{1,2},{ 3,4},{4,5},{6,7}]'。 – 2010-11-05 18:43:53

5

如果他们真的设置,使用集类型

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

<=手段“的一个子集”带套的时候。欲了解更多信息,请参阅operations on set types

1

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

相关问题