1

次のようなリスト内包表記がある場合

[mymap.get(x, None) for x in oldlist if mymap.get(x,None)]

ここで一度mymap.get(x,None)だけ行う方法はありますか?

のようなものを想像します

[y for x in oldlist if mymap.get(x,None) as y]

しかし、現在これはSyntaxErrorpy 2.xです。リスト内包表記の「式」またはその「list_if」部分の結果の値を参照できるようにしたいと考えています。

私も試してみました

[_ for x in oldlist if mymap.get(x,None)]

しかし、それは、行上の一部のインタープリター機能にすぎないNameErrorと思います。_

編集

リストを反復せずに、この一時的/匿名/名前のない変数を参照する方法はありますか?

4

2 に答える 2

5
[y for y in (mymap.get(x, None) for x in oldlist) if y]
于 2013-05-31T03:39:49.780 に答える
2
filter(None, (mymap.get(x, None) for x in oldlist))

または、代わりに使用する同等のコードがあなたの空想に合っている場合bool

filter(bool, (mymap.get(x, None) for x in oldlist))

そして、あなたの質問に答えるために、 predicateから出力関数を参照する方法はありません。

于 2013-05-31T03:39:15.930 に答える