1行を使って正の数のリストを作成しようとしていますが、それは私のためには機能しません。 else pass
が機能しない理由pythonのリストの理解で正の数だけ
newlist = [n if n>0 else pass for n in numbers]
:
numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
私のコードを助けが必要ですか?あなたはほとんどそれを持っていた
1行を使って正の数のリストを作成しようとしていますが、それは私のためには機能しません。 else pass
が機能しない理由pythonのリストの理解で正の数だけ
newlist = [n if n>0 else pass for n in numbers]
:
numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
私のコードを助けが必要ですか?あなたはほとんどそれを持っていた
:
numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
newlist = [n for n in numbers if n > 0]
出力:(この:あなたは、例えば、なしで負の数を置き換えるために、他の必要な場合には
[34.6, 44.9, 68.3, 44.6, 12.7]
あなたが求めているものではありませんが、完全性のためにここに含めます)
newlist = [n if n > 0 else None for n in numbers]
出力:
[34.6, None, 44.9, 68.3, None, 44.6, 12.7]
あなたが肯定的にすべての数字を変換したい場合は最後に、使用してabs
:
numbers = [34.6, -203.4, 44.9, 68.3, -12.2, 44.6, 12.7]
newlist = [abs(n) for n in numbers]
出力:
[34.6, 203.4, 44.9, 68.3, 12.2, 44.6, 12.7]
http://treyhunner.com/2015/12/python-list-comprehensions-now-in-color/ useful @Phani –
@Reblochon私の予想される出力は次のとおりです。 [34.6、44.9、68.3、44.6、12.7] 「else none」と印刷したもの[34.6、なし、44.9、68.3、なし、44.6、12.7] – Phani
はい、私は知っています。 else'。1つの答えに2つの構文をグループ化すると便利かもしれないと思いました。 –
期待される出力を得るために 'else pass'を使う必要はありません。 – ZdaR
@ZdaR通常if..else他のパスが期待通りに機能していますが、なぜそれがリスト内包で何が起こっていない 例: ' 番号= [34.6、-203.4、44.9、68.3、-12.2、44.6、12.7] 用nならば n> 0の場合: print(n) else: pass ' – Phani
興味深いのは、リスト内包表記が' if'/'else'のno-opをサポートしない理由です。それを動作させるためにコードを修正することは一つのことですが、なぜOPのコードが 'pass'のために' SyntaxError'であるのか説明しません。 – roganjosh