web-dev-qa-db-ja.com

PyCharm: "連鎖比較を単純化する"

整数値xがあり、それがstartendの値の間にあるかどうかをチェックする必要があるので、以下のステートメントを書きます。

if x >= start and x <= end:
    # do stuff

この文には下線が引かれていますが、ツールチップでは、次のように説明します。

連鎖比較を単純化する

私が言うことができる限り、その比較は彼らが来るのと同じくらい簡単です。私はここで何を逃しましたか?

201
Brynn McCullagh

Pythonでは、 "チェーン"比較演算 を行うことができます。これは、それらが "と"で結合されていることを意味します。あなたの場合は、このようになります:

if start <= x <= end:

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

354
John Zwinck

次のように書き換えることができます。

start <= x <= end:

または

r = range(start, end + 1) # (!) if integers
if x in r:
    ....
9
Maroun