Python 解读lambda列表

Python 解读lambda列表,python,lambda,callable,Python,Lambda,Callable,我有一个列表,其中也包含一些lambda元素: l=['A',lambda x:x*2,lambda x:x*3] 在执行lambda之后,如何将此列表附加到另一个列表中(如下所示-显然此列表不起作用): 预期的结果是: m=['A',6,9] 这可能吗?您可以使用 是否确实要将此列表附加到另一个列表,或创建新列表? 万一您碰巧使用了一个不推荐使用callable的python版本: for element in l: m.append(element(3) if hasattr(e

我有一个列表,其中也包含一些lambda元素:

l=['A',lambda x:x*2,lambda x:x*3]
在执行lambda之后,如何将此列表附加到另一个列表中(如下所示-显然此列表不起作用):

预期的结果是:

m=['A',6,9]
这可能吗?

您可以使用


是否确实要将此列表附加到另一个列表,或创建新列表? 万一您碰巧使用了一个不推荐使用callable的python版本:

for element in l:
    m.append(element(3) if hasattr(element, '__call__') else element)

为什么要这样做?使用
callable
而不是
hasattr(element,'.\u call'.\uu')
@oleg主要问题是在结果不可用时使用三元
如果使用Python3.0或3.1,则应该使用
isinstance(element,collections.callable)
而不是
callable()
。在3.2+中,
callable()
被重新激活。@jamylak你的意思是等价的行应该是:
m.append(元素(3)if hasattr(元素,'.\u call\u')else元素)
?(忽略可调用问题)Thanks@andy更好的是,它实际上使用了三元
,如果
像它应该使用的那样。我们应该记住,类的callable也是true
isinstance(a,type)和callable(a)=true
>>> l = ['A', lambda x:x*2, lambda x:x*3]
>>> m = [k(3) if callable(k) else k for k in l]
>>> m
['A', 6, 9]
for element in l:
    m.append(element(3) if hasattr(element, '__call__') else element)