Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python if或语句速记_Python_If Statement - Fatal编程技术网

Python 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

我试图找出是否有一种更简短的方法来编写这个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)
在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: