缩写python中的双重比较

fer*_*son 9 python

有没有办法在python中缩写比较语句,这样我就不必再把整个事情写出去了?例如,而不是:

a=3
if a==3 or a==2:
    print "hello world"
Run Code Online (Sandbox Code Playgroud)

我可以这样做:如果a ==(3或2):打印"你好世界"

我知道上面的例子不起作用但是有另一种方法可以达到预期的效果吗?

NPE*_*NPE 14

if a in (2, 3):
  print "hello world"
Run Code Online (Sandbox Code Playgroud)

  • @Levon:无论如何我都没有强烈的偏好,但在我眼里,一个元组在这里看起来更自然. (4认同)
  • 这只是一个风格问题,但肯定有一个通用原则可以证明更喜欢将元组添加到列表中:当你可以使用它时使用更多受限制的工具,只有在需要时才使用强大的工具 - 这样,通过考虑实际上不会使用的功能,代码的读者不会分心.在这里,使用元组,因为您不会使用就地修改的特定于列表的功能. (4认同)

Noc*_*wer 13

有关以下答案的原因,请参阅Python 3.2优化.

a = 3
if a in {2, 3}:
    print('Hello, world!')
Run Code Online (Sandbox Code Playgroud)


rob*_*ert 12

可能的解决方案,取决于您想要什么:

  • if a in (2,3)
  • if a in xrange(2, 4)
  • if 2 <= a <= 3

  • 但是 range 必须在内存中放置一个包含所有数字的列表,因此 `3 in range(9999999999999)` 引发异常,但 `3 in xrange(9999999999999)` 有效 (2认同)