2010-11-05 226 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是正確的類型。在列表中,組件的順序很重要,在集合中它們不重要。這就是爲什麼你沒有得到'真實'的原因。

相關問題