231

これは、Python リスト内包表記の構文に関するものです。特定の範囲の奇数のリストを生成するリスト内包表記があります。

[x for x in range(1, 10) if x % 2]

これによりフィルターが作成されます。ソース リストがあり、ここで偶数を削除します ( if x % 2)。ここで if-then-else のようなものを使用したいと思います。次のコードは失敗します:

>>> [x for x in range(1, 10) if x % 2 else x * 100]
  File "<stdin>", line 1
    [x for x in range(1, 10) if x % 2 else x * 100]
                                         ^
SyntaxError: invalid syntax

if-else のような Python 式があります。

1 if 0 is 0 else 3

リスト内包表記内でどのように使用するのですか?

4

6 に答える 6

25
[x if x % 2 else x * 100 for x in range(1, 10) ]
于 2013-06-26T13:19:43.530 に答える
16

リスト内包表記でもそれを行うことができます:

A=[[x*100, x][x % 2 != 0] for x in range(1,11)]
print A
于 2014-06-29T07:40:36.000 に答える
13

ちょうど別の解決策、誰かがそれを気に入ってくれることを願っています:

使用: [偽、真][式]

>>> map(lambda x: [x*100, x][x % 2 != 0], range(1,10))
[1, 200, 3, 400, 5, 600, 7, 800, 9]
>>>
于 2014-01-18T12:54:12.043 に答える