私は、競争力のあるプログラミングサイトにあった、そしてこの奇妙な(私には)Pythonの3のコードを書いた男が見つかりました:r
がある場合二つの角括弧側:奇妙な効果
[r,"Nothing"][r==""]
それは、'Nothing'
を出力空の文字列
これはどのように呼び出され、それはどういう意味ですか?三元演算子のように見えます。
私は、競争力のあるプログラミングサイトにあった、そしてこの奇妙な(私には)Pythonの3のコードを書いた男が見つかりました:r
がある場合二つの角括弧側:奇妙な効果
[r,"Nothing"][r==""]
それは、'Nothing'
を出力空の文字列
これはどのように呼び出され、それはどういう意味ですか?三元演算子のように見えます。
これはどのように呼び出され、それはどういう意味ですか?三元演算子のように見えます。
Python AFAIKに正式な名前はありません。それは実際には、リストを索引付けする、ちょっと恥ずかしがり屋な方法です。
r == ''
がFalse
ある場合r==""
はTrue
とr
ある場合は"Nothing"
を選択します。例として:True
とFalse
以来
>>> [0, 1][True]
1
>>> [0, 1][False]
0
をするときに、インデックスのリストを、それぞれ1
と0
として解釈されます。
スニペットそれが空の文字列[r=='']
とr
の比較True/False
結果を使用して、2つの要素を一時リストを定義[r, "Nothing"]
、次いでインデックス提供。
最も読みやすいコードではなく、おそらくあなたが使用する予定のないリストを作成するための最良のアイデアではありません。より効率的な
"Nothing" if r == "" else r
より読みやすく、ロット:それは簡単に条件式により置換することができる
%timeit True if False else False
10000000 loops, best of 3: 32.9 ns per loop
%timeit [False, True][False]
10000000 loops, best of 3: 176 ns per loop
リストとそれを添字する必要はありませんを作成する必要はありません。条件付きで読み込み中です。
それに変換:この文脈で
if (r==""):
'Nothing'
else:
r
False
は0、及び1とTrue
として使用される。
>>> [r,'Nothing'][False]
'foo'
>>> [r,'Nothing'][True]
'Nothing'
これは他の言語に'condition'?'if true':'if false'
にワンライナー似ています。これは通常可能な限り最短のコードを生成する必要があるcode golfで使用されます。
うん、そうですよ!それは難しいです!どうもありがとうございました! –