2011-08-25 41 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发送给您,以了解此示例。这本书非常好,但它似乎不再是课堂的一部分。

相关问题