Python if或语句速记
我试图找出是否有一种更简短的方法来编写这个if语句(编写了一个非常基本的、不现实的if语句,只是为了便于理解要点)Python if或语句速记,python,if-statement,Python,If Statement,我试图找出是否有一种更简短的方法来编写这个if语句(编写了一个非常基本的、不现实的if语句,只是为了便于理解要点) x = 3 if x == 1 or x == 2 or x == 3 or x==4: print x else: print "nope" 我想写一些大致如下的内容: if x == or(1,2,3,4): 有没有办法做到这一点?或者我必须写下每一个选项 谢谢, 肖恩在操作符中使用: if x in range(1, 5) 在Py
x = 3
if x == 1 or x == 2 or x == 3 or x==4:
print x
else:
print "nope"
我想写一些大致如下的内容:
if x == or(1,2,3,4):
有没有办法做到这一点?或者我必须写下每一个选项
谢谢,
肖恩在操作符中使用
:
if x in range(1, 5)
在Python2上,您可以使用xrange
在Python 3.2+上,建议使用集合文本:
如果{1,2,3,4}中的x
:
:
Python的窥视孔优化器现在可以识别{1,2,
3}
作为一组常量的成员资格测试。优化器
将集合
重铸为冻结集合
,并存储预构建的常量。
既然速度惩罚已经取消,开始写作是可行的
使用集合表示法进行成员资格测试。此样式在语义和
清晰且操作快速
你想要:
if x in (1, 2, 3, 4):
如果x>=1或xformat您的代码正确,在其他语言中我真的会忽略这一点。如果您的值不止一个,如果{1,2,3,4}中的x:
(使用集合)更好。但是对于其中的四个,这不会有什么区别。在这种情况下,如果您使用的Python版本没有set文本,请在if
语句之前定义set。@kindall:Well,set((1,2,3,4))
不是那么可怕,当然也不是你在Python 2.3中会遇到的最可怕的事情……在Javascript中,你可以做[1,2,3,4]。indexOf(x)+1
来避免丑陋的!=-1
,尽管这可能更糟糕。:-)Python允许更短的如果1如果x==10
?(哦,我想你的意思是和
),但这也会让x==1.5
通过。实际上,我更喜欢如果0
进行这种比较;假装它是(1,17,3,10000,4)或什么的。很抱歉不清楚,但是“if x in(1,17,310000,4)”是我一直在寻找的理想方法。不过,谢谢!这是Python3的一个很好的解决方案,但是OP使用的是Python2,这意味着它必须创建一个列表,然后线性搜索它。对于4个值来说,这不是一个可怕的问题,但是对于4个值,我不认为它比仅仅编写[1,2,3,4]
更简洁易读。对于Python 2,只需使用xrange
。@chepner:我不认为在xrange
上的中的是2.x中的常量时间,2.7中的时间不是常数;尝试%timeit 10000在xrange(20000)
,%timeit 100000在xrange(200000)
,%timeit 1000000在xrange(2000000)
中,它显然是线性的。无论如何,对于具有默认步长和整数值的范围,您只需编写1即可
if x>=1 or x<=4: