首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查以下所有项目是否都在列表中?

如何检查以下所有项目是否都在列表中?
EN

Stack Overflow用户
提问于 2010-10-14 16:52:06
回答 7查看 159.8K关注 0票数 146

我发现,有一个相关的问题,关于如何找到列表中是否至少存在一个项目:

How to check if one of the following items is in a list?

但是,找出列表中是否存在所有项目的最佳方法是什么?

在搜索文档时,我找到了这个解决方案:

代码语言:javascript
复制
>>> l = ['a', 'b', 'c']
>>> set(['a', 'b']) <= set(l)
True
>>> set(['a', 'x']) <= set(l)
False

其他解决方案是这样的:

代码语言:javascript
复制
>>> l = ['a', 'b', 'c']
>>> all(x in l for x in ['a', 'b'])
True
>>> all(x in l for x in ['a', 'x'])
False

但是在这里你必须做更多的输入。

有没有其他的解决方案?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-10-14 17:05:34

像Python语言中的<=这样的运算符通常不会被覆盖,以表示与“小于或等于”显著不同的含义。标准库这样做是不寻常的--在我看来,它像是遗留的API。

使用等效的、命名更清晰的方法set.issubset。请注意,您不需要将参数转换为集合;如果需要,它将为您执行此操作。

代码语言:javascript
复制
set(['a', 'b']).issubset(['a', 'b', 'c'])
票数 225
EN

Stack Overflow用户

发布于 2010-10-14 16:58:09

我可能会以以下方式使用set

代码语言:javascript
复制
set(l).issuperset(set(['a','b'])) 

或者反过来:

代码语言:javascript
复制
set(['a','b']).issubset(set(l)) 

我发现它的可读性更好一点,但它可能是过度杀伤力。集合对于计算集合之间的并集/交集/差异特别有用,但在这种情况下,它可能不是最佳选择……

票数 67
EN

Stack Overflow用户

发布于 2010-10-14 19:01:22

我喜欢这两个,因为它们看起来最符合逻辑,后者更短,而且可能更快(这里使用的是backported到Python2.7的set文字语法):

代码语言:javascript
复制
all(x in {'a', 'b', 'c'} for x in ['a', 'b'])
#   or
{'a', 'b'}.issubset({'a', 'b', 'c'})
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3931541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档