2011-08-25 19 views

回答

5

您可以使用set operations

if set(list1) <= set(list2): 
    #... 

注意,比較本身是快,但轉換列表來臺可能不會(取決於列表的大小)。

轉換爲一個集合也會刪除任何重複。因此,如果您有重複的元素,並且希望確保它們在另一個列表中也是重複的,則使用集合將不起作用。

+0

如果列表是'[1,1,2]'和'[1,2,3]',該怎麼辦? –

+1

Python中的'set's是* AWESOME *。 – cwallenpoole

+1

@Gabi這意味着元素1和元素2包含在集合{1,2,3}中。它應該(並確實)返回true。 – cwallenpoole

3

,您可以使用內置的所有()函數:

if all(x in sLVals for x in fLVals): 
    # do something 

在使用組認爲你可以看看difference method據我知道的情況是相當快捷的方式:

if set(fLVals).difference(sLVals): 
    # there is a difference 
else: 
    # no difference 
+2

請注意,這是'O(N^2)'的運行時間。特別是'sLVals中的x將會很慢(線性搜索)。 –

+1

+1適用於不需要大量額外存儲的解決方案。 –

+0

謝謝,但我認爲所有的方法都可以使用,但不確定,但例如設置不能用於列表等等。 –

0

可以是set.issupersetall(x in L2 for x in L1)

0

這人來直出的good folks at MIT

from operator import and_ 
reduce(and_, [x in b for x in a]) 

我試圖找到他們張貼的6.01類大約一年前的"readings.pdf" ...但我無法找到它了。

轉到我的檔案併發給我一封電子郵件,我會將.pdf發送給您,以瞭解此示例。這本書非常好,但它似乎不再是課堂的一部分。

相關問題