1. ホーム
  2. パイソン

[解決済み】リスト内包で'else'を使用することは可能ですか?重複

2022-04-07 21:47:28

質問

以下は、私がリスト内包に変えようとしていたコードです。

table = ''
for index in xrange(256):
    if index in ords_to_keep:
        table += chr(index)
    else:
        table += replace_with

この内包にelse文を追加する方法はないのでしょうか?

table = ''.join(chr(index) for index in xrange(15) if index in ords_to_keep)

解決方法は?

構文 a if b else c は、Pythonの三項演算子で、次のように評価されます。 a という条件であれば b が真であれば、次のように評価されます。 c . これは、内包文の中で使うことができます。

>>> [a if a else 2 for a in [0,1,0,3]]
[2, 1, 2, 3]

だから、あなたの例では

table = ''.join(chr(index) if index in ords_to_keep else replace_with
                for index in xrange(15))