所以我想说我有一个这样的列表
WM_MENUCOMMAND
我想在这里做的是检测列表'color'只包含不是'hurley'和'maladroit'颜色的元素。
类似于:
color = ['blue', 'green', 'red', 'white', 'hurley', 'maladroit']
答案 0 :(得分:2)
让我们创建一个set
可用颜色
allowed = {'blue', 'green', 'red', 'white'}
然后检查"否则列表中至少有一个元素是真正的颜色"
print(not any(c in allowed for c in color))
如果列表中至少有一种颜色, True
,['hurley', 'maladroit']
会产生False
应该在性能方面非常快,因为:
set
进行测试any
功能编辑:当我们使用isdisjoint
(thx PM 2Ring让我查明)时,使用set
方法更简单,更快捷:
print(allowed.isdisjoint(color))
答案 1 :(得分:2)
受到以前答案的启发: 创建一组允许的颜色,并检查差异中是否有任何允许的颜色。
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 :(得分:1)
受相关答案(https://stackoverflow.com/a/642919/2034487)的启发,您可以使用set()
的{{1}}方法:
包含颜色的列表:
intersection()
在没有任何颜色的情况下做同样的事情:
$ 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"
显然,您会将此方法放入包装器中以测试现实生活中的变量。我正在写长篇文章来证明这两个结果。
答案 3 :(得分:0)
color = ['blue', 'green', 'red', 'white', 'hurley', 'maladroit']
你可以结合这两个
color.count('hurley')
color.count('maladroit')
或 这些
'hurley' in color
'maladroit' in color