私はPythonのリストの理解を学んでいて、使用法を見ていて、正式な文書で説明を見つけることができませんでした。私は、このように抽象この使用しようとしていますPython 'と/または'は式で何を意味し、 `(not i%2)`は何をテストしますか?
>>>[(not i%2)*'a' or str(i) for i in range(10)]
>>>['a', '1', 'a', '3', 'a', '5', 'a', '7', 'a', '9']
:
[statement1 or statement2 for i in range(10)]
と文1がfalseと評価された場合、その文2を使用し、私は右ですか?
また、私は、次のコマンドを実行した場合ことを発見:
>>> [(not i%2)*'a' and str(i) for i in range(10)]
を出力は次のようになります。
>>> ['0', '', '2', '', '4', '', '6', '', '8', '']
私はこれらを理解する必要がありますどのように?
これは次のとおりです。
それは読みやすくなるためより良い条件式として述べられていますほぼ確実に既存のQ&Aと重複しています。 – smci
'(not i%2)'は整数が奇数かどうかを調べるためのイディオムです。そこには少なくとも6つの既存の質問があります。より明確にするために、述語関数 'is_odd(n)'を宣言します。 – smci
'true_valueとcondまたはfalse_value'は古い[Pythonの2.5より前の三項演算子(?またはifelse)を実装するためのイディオムです](https://stackoverflow.com/questions/394809/does-python-have-a-三項条件付き演算子)。 [新しい慣用句は 'true_value if else else false_value'](http://stackoverflow.com/a/394814/202229)です。これはリストの理解にあるのか他のところにあるのかは関係ありません。とにかく、これまでに何度も尋ねられてきました。また、["Pythonの条件演算子 'else else' not equal 'and' '](https://stackoverflow.com/questions/33780600/python-conditional-operator-if-else-not-equal-and-or) – smci