PyCharm:"简化链式比较"

Bry*_*agh 225 python pycharm

我有一个整数值x,我需要检查它是否在a startend值之间,所以我写下面的语句:

if x >= start and x <= end:
    # do stuff
Run Code Online (Sandbox Code Playgroud)

这个陈述有下划线,工具提示告诉我必须

简化链式比较

据我所知,这种比较就像它们来的一样简单.我错过了什么?

Joh*_*nck 399

在Python中,您可以"链接"比较操作,这意味着它们"和"在一起.在你的情况下,它是这样的:

if start <= x <= end:
Run Code Online (Sandbox Code Playgroud)

参考:https://docs.python.org/3/reference/expressions.html#comparisons

  • 男人这就是事情应该如何.但是来自其他语言你忘记了你的理想,甚至没想到,事情可能就是他们应该的样子.但这就是为什么python是惊人的,正是因为这样的事情:) (13认同)
  • 谢谢,我不知道你可以用Python做到这一点.我真的在这个问题上摸不着头脑. (2认同)

Mar*_*oun 11

它可以改写为:

start <= x <= end:
Run Code Online (Sandbox Code Playgroud)

要么:

r = range(start, end + 1) # (!) if integers
if x in r:
    ....
Run Code Online (Sandbox Code Playgroud)

  • 在python3中,range很好地处理"__contains__",因此不会生成任何列表. (7认同)
  • 范围是一个糟糕的选择,因为对于大的开始和结束,您创建了一个不必要的列表. (5认同)
  • 有关使用`if x in range(...)`的详细信息,请参阅Python中的"[为什么"范围内的1000000000000000(1000000000000001)这么快?)(/sf/ask/2105689281/ )". (5认同)
  • @MarounMaroun自python 3起,range函数的行为类似于以前的xrange,这也值得一提 (2认同)