「できないかも」と考えている人もいるかもしれない。
しかし、できる。
工夫ではなくて、普通の書き方として用意されている。
内包表記でifを単体で使うときはこんな感じになるので、それにつられて末尾にelseをつけてみる人が多いようだ。
>>> # 5未満を返す(if 単体)
>>> hoge = range(10)
>>> hoge
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> [x for x in hoge if x < 5]
[0, 1, 2, 3, 4]
ここで、5未満はそのまま返し、5以上は'larger'に置き換えたいときはこう書く。
>>> [x if x < 5 else 'larger' for x in hoge]
[0, 1, 2, 3, 4, 'larger', 'larger', 'larger', 'larger', 'larger']
# [x for x in hoge if x < 5 else 'larger'] これは間違い
いつのバージョンから使えるのか知らないけど、とにかく2.7では使えている。
1 件のコメント:
これは内包表記の中で三項演算子を使っているだけだと思います
三項演算子は2.5から導入されたそうです
コメントを投稿