如果我有像
这样的列表理解[mymap.get(x, None) for x in oldlist if mymap.get(x,None)]
有没有办法在{<1}}只一次?
我想像
mymap.get(x,None)
但目前这是py 2.x中的[y for x in oldlist if mymap.get(x,None) as y]
。我希望能够引用列表推导的"expression"或者“list_if”部分的结果值。
我也试过
SyntaxError
但那是[_ for x in oldlist if mymap.get(x,None)]
,我猜NameError
只是行上的一些翻译功能。
修改
有没有办法以某种方式引用这个临时/匿名/未命名变量,而无需重新迭代列表?
答案 0 :(得分:4)
[y for y in (mymap.get(x, None) for x in oldlist) if y]
答案 1 :(得分:2)
filter(None, (mymap.get(x, None) for x in oldlist))
或者使用bool
filter(bool, (mymap.get(x, None) for x in oldlist))
要回答您的问题,我们无法从output function引用predicate。