python式的说法;如果列表1中的所有元素也存在于列表2中;

python式的说法;如果列表1中的所有元素也存在于列表2中;,python,Python,仅当列表1中的所有元素也存在于列表2中(列表2是列表1的超集)时,我才希望从if语句返回true。写这篇文章的最具python风格的方式是什么?您可以使用: 如果设置(列表1)则可以使用内置的all()函数: if all(x in sLVals for x in fLVals): # do something 在使用集合的情况下,据我所知,您可以查看一下,这是一种非常快速的方法: if set(fLVals).difference(sLVals): # there is a

仅当列表1中的所有元素也存在于列表2中(列表2是列表1的超集)时,我才希望从if语句返回true。写这篇文章的最具python风格的方式是什么?

您可以使用:

如果设置(列表1)则可以使用内置的all()函数:

if all(x in sLVals for x in fLVals):
    # do something
在使用集合的情况下,据我所知,您可以查看一下,这是一种非常快速的方法:

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

set.issuperset
all(L2中的x代表L1中的x)

这一个直接来自:

我试图找到一年前他们为6.01课程发布的
“readings.pdf”
,但我再也找不到了


请转到我的个人资料并向我发送电子邮件,我将向您发送获得此示例的.pdf文件。这是一本非常好的书,但它似乎不再是类的一部分。

如果列表是
[1,1,2]
[1,2,3]
Python中的set
非常棒。@Gabi这意味着元素1和2包含在set{1,2,3}中。它应该(并且确实)返回true。这不需要对每个列表进行重复存储吗?@Gabi-Huh?如果列表A的所有元素都是在列表B中找到的,您可以正确地声明B是A的超集。这就是OP所要求的。请注意,它的运行时间是
O(N^2)
。特别是SLVAL中的
x
将很慢(线性搜索)。+1用于不需要大量额外存储的解决方案。谢谢,但我认为也可以使用所有方法,不确定,但例如set不能用于dict等列表。
if set(fLVals).difference(sLVals):
    # there is a difference
else:
    # no difference
from operator import and_
reduce(and_, [x in b for x in a])