Python 是否有一种更简短的方式询问两个变量是否为一个值?
在python 3中,有没有一种较短的编写方法:Python 是否有一种更简短的方式询问两个变量是否为一个值?,python,python-3.x,Python,Python 3.x,在python 3中,有没有一种较短的编写方法: if a in ('n', 'm') or b in ('n', 'm'): print(a) 我一直在寻找,但没有找到较短的路。 我正在尝试将此行键入较短的文字: if color1 in ('blue', 'red') or color2 in ('blue', 'red'): 你可以写 if any(color in ('blue', 'red') for color in (color1, color2)): 如果您有3个或
if a in ('n', 'm') or b in ('n', 'm'):
print(a)
我一直在寻找,但没有找到较短的路。
我正在尝试将此行键入较短的文字:
if color1 in ('blue', 'red') or color2 in ('blue', 'red'):
你可以写
if any(color in ('blue', 'red') for color in (color1, color2)):
如果您有3个或更多变量,If将受益。如果只有两个变量,则您的变量看起来很好。您可以使用
set
,具体如下:
如果两个集合不是“不相交的”,则它们有一个公共元素。只有当color1
或color2
中至少有一个属于{'blue','red'}
时,才会出现这种情况
如果要检查它们是否都属于
{blue',red'}
,请使用或使用其语法糖如果{a,b}:
中的'n',可能在字符方面较短,但实际上并不清晰。为什么您需要更短?我正在尝试这样做:如果color1在('blue'、'red')或color2在('blue'、'red'):您正在测试color1
是否是“blue”
或“red”
两倍于此……为什么必须更短?如果希望color1和color2在('blue'、'red'),如果您希望它们都在列表中,您只需将any
替换为all
。如果{color1,color2}&{blue',red'}
@a_guest,您可以通过快捷方式实现这一点,因为它们不一样set.isdisjoint
短路,时间复杂度较低<代码>设置。交叉点
实际计算整个交叉点,而不仅仅是非空交叉点的存在。
if not {color1, color2}.isdisjoint({'blue', 'red'}):
print(color1)
if {color1, color2} <= {'blue', 'red'}:
print(color1)