PyCharm: “Simplify Chained Comparison”
我有一个整数值x,我需要检查它是否在start和end值之间,所以我写了以下语句:
1 2
| if x >= start and x <= end:
# do stuff |
这个语句带有下划线,工具提示告诉我必须
simplify chained comparison
据我所知,比较是最简单的。我错过了什么?
在Python中,您可以"链接"比较操作,这意味着它们是"和"在一起的。在你的例子中,应该是这样的:
参考:https://docs.python.org/3/reference/expressions.html比较
- 谢谢,我不知道你能用Python做这个。在这件事上我真的抓耳挠腮。
- 伙计,事情应该是这样的。但是来自其他语言的人,你忘记了你的理想,甚至不认为事情可能是他们应该做的。但这就是为什么python令人惊异的原因,正是因为这样的原因:)
- 你知道有什么"官方"的消息来源推荐链接样式而不是其他样式吗?哪一个更"惯用"的python?
- 我不知道,有时候我真希望Python能多装些护栏。当x,y,z是pandas系列时,x==y==z失败,并出现值错误。
- @圆珠笔本:很多事情都不像你在大熊猫身上所期望的那样奏效,甚至连江户记(1)都不行。
它可以改写为:
或:
1 2 3
| r = range(start, end + 1) # (!) if integers
if x in r:
.... |
- 范围是一个糟糕的选择,因为对于大的开始和结束,您创建了一个不必要的列表。
- @的确是伯汉克哈罗,但我想这值得一提。
- 在python3中,范围句柄"contains"很好,因此不会生成任何列表。
- @marounmaroun自从python 3以来,range函数的行为就像以前的xrange,也值得一提。
- 有关使用if x in range(...)的详细信息,请参见"为什么在python 3中"10000000000000000在范围内(100000000000000001)"这么快?".
- 好吧,但它仍然会创建一个对象,速度较慢。
代码的简化
1 2
| if start <= x <= end: # start x is between start and end
# do stuff |