-2

これは本当に簡単な質問のようです。しかし、それが実際にどのように可能であるかはわかりません。私は通常、PEP8に準拠したコードでかなり良いです。83文字は細かいタイプのものです。or長いリスト(辞書)の理解と、改行しようとしているものを組み合わせたものがありますが、改行する方法がわかりませんor

はるかに簡略化されたバージョンは次のとおりです。

>>> test = {'a' : None, 'b' : None}
>>> b = ','.join([k for k in test
...               if test[k]]) or 'hello'

or 'hello'(どこでも)私が改行を入れようとすると、それは惨めに失敗します。コマンドラインインタープリターとemacsのパーサーも理解できないため、不可能な場合があります。

or 'hello'新しいラインを入れることは可能ですか?もしそうなら、それはどこに行きますか?

4

3 に答える 3

4

括弧で囲みます。これは機能します。

>>> test = {'a' : None, 'b' : None}
>>> b = (','.join([k for k in test if test[k]])
...      or 'hello')
于 2012-02-09T12:31:00.280 に答える
2

行が長くなりすぎる場合は、読みやすくするために複数のステートメントに分割してください。

b = ','.join(k for k in test if test[k])
if not b:
    b = 'hello'

(リスト内包表記をより適切なジェネレータ式に変更しました。)

于 2012-02-09T12:32:13.927 に答える
2

行の継続をバックスラッシュで明示的にマークします。

>>> test = {'a' : None, 'b' : None}
>>> b = ','.join([k for k in test if test[k]]) \
...          or 'hello'
于 2012-02-09T12:36:12.953 に答える