PythonでIFステートメントを使用する場合、「カスケード」を正しく機能させるには、次のことを行う必要があります。
if job == "mechanic" or job == "tech":
print "awesome"
Elif job == "tool" or job == "rock":
print "dolt"
Pythonが「等しい」をチェックするときに複数の値を受け入れるようにする方法はありますか?たとえば、
if job == "mechanic" or "tech":
print "awesome"
Elif job == "tool" or "rock":
print "dolt"
if job in ("mechanic", "tech"):
print "awesome"
Elif job in ("tool", "rock"):
print "dolt"
括弧内の値はタプルです。 in
演算子は、左側の項目が右側のハンドルタプル内のどこかにあるかどうかを確認します。
Pythonがin
演算子を使用してタプルまたはリストを検索する場合、線形検索を実行することに注意してください。右側に多数のアイテムがある場合、これはこれを行う大規模な方法は frozenset
を使用することです。
AwesomeJobs = frozenset(["mechanic", "tech", ... lots of others ])
def func():
if job in AwesomeJobs:
print "awesome"
プログラムの実行中に素晴らしいジョブのリストを変更する必要がない場合は、frozenset
よりもset
を使用することをお勧めします。
以下で使用できます。
if job in ["mechanic", "tech"]:
print "awesome"
非常に大きな数をチェックするときは、チェックする項目のセットを保管しておく方が高速になるため、チェックする価値があるかもしれません。例えば。
AwesomeJobs = set(["mechanic", "tech", ... lots of others ])
...
def func():
if job in AwesomeJobs:
print "awesome"
if job in ("mechanic", "tech"):
print "awesome"
Elif job in ("tool", "rock"):
print "dolt"
私はあなたがあなたが望むことを直接行うことができるとは思いませんが、一つの選択肢は:
if job in [ "mechanic", "tech" ]:
print "awesome"
Elif job in [ "tool", "rock" ]:
print "dolt"
定数項目を持つタプルは、コンパイルされた関数に定数として格納されます。 1つの命令でロードできます。一方、リストとセットは、実行ごとに常に新しく作成されます。
タプルとリストはどちらも、演算子内で線形検索を使用します。セットはハッシュベースのルックアップを使用するため、オプションの数が多いほど高速になります。
他の言語では、switch/selectステートメントを使用してジョブを完了します。 python too でもできます。