首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查是否只有指定的元素保留在列表中?

如何检查是否只有指定的元素保留在列表中?
EN

Stack Overflow用户
提问于 2017-01-06 12:40:59
回答 4查看 97关注 0票数 1

所以让我们假设我有这样一个列表

代码语言:javascript
复制
color = ['blue', 'green', 'red', 'white', 'hurley', 'maladroit']

我在这里要做的是检测当列表'color‘仅由不是颜色的元素组成,这些元素是'hurley’和'maladroit‘。

所以,就像:

代码语言:javascript
复制
#If the list color has at least one color in it (E.g)color = ['blue','white','maladroit']
    print('Nothing to see here')

#If the list only consists of elements that aren't colors 
#(E.g)color = ['hurley','maladroit']
    print("I don't see colors.... I actually legit don't...")
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-01-06 12:46:23

让我们创建一个可用颜色的set

代码语言:javascript
复制
allowed = {'blue', 'green', 'red', 'white'}

然后检查“列表中至少有一个元素是真实颜色”的否定。

代码语言:javascript
复制
print(not any(c in allowed for c in color))

如果列表中至少有一种颜色,则生成True用于['hurley', 'maladroit']False

应该表现得非常快,因为:

  • 它使用set来测试
  • 它没有创建其他临时列表
  • 它使用内置的any函数

编辑:使用isdisjoint方法更简单、更快,而我们使用的是set (TXPM2ring,用于让我知道):

代码语言:javascript
复制
print(allowed.isdisjoint(color))
票数 2
EN

Stack Overflow用户

发布于 2017-01-06 13:09:47

灵感来自之前的答案:创建一组允许的颜色,并检查是否有任何允许的颜色在差异中。

代码语言:javascript
复制
allowed_colors = {'red', 'green', 'blue', 'white'}

color = ['blue', 'green', 'red', 'white', 'hurley', 'maladroit']

color_set = set(color)
if len(color_set - allowed_colors) < len(color_set):
    print('Nothing to see here')
else:
    print("I don't see colors.... I actually legit don't...")

编辑:解决方案不正确。现在可以正常工作了。虽然isdisjoint是最优雅的解决方案,如果你知道集合论,正如让-弗朗索瓦所指出的。

票数 2
EN

Stack Overflow用户

发布于 2017-01-06 13:03:29

受相关答案(https://stackoverflow.com/a/642919/2034487)的启发,您可以使用set()intersection()方法:

包含颜色的列表:

代码语言:javascript
复制
$ approved_colours = set(['blue','green'])
$ list_with_colours = ['blue', 'green', 'red', 'white', 'hurley', 'maladroit']
$ if approved_colours.intersection(list_with_colours):
$     print("There are colours present")
$ else:
$     print("There are no colours present")
> "There are colours present"

在没有任何颜色的情况下也这样做:

代码语言:javascript
复制
$ list_without_colours = ['hurley', 'maladroit']
$ if approved_colours.intersection(list_without_colours):
$     print("There are colours present")
$ else:
$     print("There are no colours present")
> "There are no colours present"

显然,您会将此方法放入包装器中,以测试现实生活中的变量。我正在写长篇表格来演示这两种结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41506002

复制
相关文章

相似问题

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