简化python中的双重比较

简化python中的双重比较,python,Python,有没有一种方法可以在python中缩写一个比较语句,这样我就不必再把整个内容写出来了?例如,而不是: a=3 if a==3 or a==2: print "hello world" 我可以做一些类似于: 如果a==(3或2): 打印“hello world” 我知道上面的示例不起作用,但是否有其他方法可以达到预期效果?可能的解决方案,具体取决于您想要什么: if a in (2, 3): print "hello world" 如果a在(2,3)中 如果a在X范围内(2,4)

有没有一种方法可以在python中缩写一个比较语句,这样我就不必再把整个内容写出来了?例如,而不是:

a=3
if a==3 or a==2:
    print "hello world"
我可以做一些类似于: 如果a==(3或2): 打印“hello world”


我知道上面的示例不起作用,但是否有其他方法可以达到预期效果?

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

if a in (2, 3):
  print "hello world"
  • 如果a在(2,3)中
  • 如果a在X范围内(2,4)
  • 如果2请参见下面的答案原因

    a = 3
    if a in {2, 3}:
        print('Hello, world!')
    

    重新编辑:使用元组而不是列表更可取吗?@Levon:我对这两种方式都没有强烈的偏好,但在我看来,元组在这里看起来更自然一些。好的,谢谢。。我知道有时候会有细微的差别,只是想确保我没有遗漏任何东西,因为我通常使用列表。这只是一个风格问题,但肯定有一个普遍的原则可以证明选择元组而不是列表是正确的:如果可以,请使用更受限制的工具,而强大的功能只有在需要的时候才会出现——这样,代码的读者就不会因为想到实际上不会用到的功能而分心。在这里,使用元组是因为您不打算使用特定于列表的就地修改功能。虽然这可能不是一个重要的情况,但元组的创建速度要比Python中的列表快得多:在这种情况下,使用
    xrange
    而不是
    range
    ,是否有好处?我很高兴Python 3去掉了
    xrange
    @MarkRansom,在这种情况下,这可能没关系。@robert+1但如果没关系,最好使用range来实现py3x兼容性。但是range必须在内存中列出所有数字,所以
    3在range(999999999999999)
    会引发异常,但xrange中的
    3(99999999999999)
    有效