具有列表操作的Lambda表达式

时间:2016-06-14 12:13:16

标签: python

下面的lambda表达式不应该返回一个列表吗?目前,它不是。

 >>> f=lambda l ,x:l.append(x) 
 >>> print f([1],3)
 None

3 个答案:

答案 0 :(得分:1)

append是一个副作用函数;它会将值附加到现有列表而不返回值(或None,具体取决于您想要的方式)。

也许你想要:

lambda l, x: l + [x]

这将从现有列表创建一个新列表,并在末尾附加一个元素。

答案 1 :(得分:0)

函数append返回None,因此你的lambda也返回None。此外,append仅更改本地变量l

答案 2 :(得分:0)

list.append()不会返回值,但因为python列表是mutable object<CustomControls:CustomTextBox ... ImageSrc="{StaticResource ByParticipantSource}" /> 确实会被追加,所以它不会被返回。

例如,这将起作用:

3

如果您不想修改t = [1] f(t, 3) print(t) # [1, 3] ,可以写

t

因为lambda不会修改列表f = lambda l, x: l + [x] t = [1] print(f(t, 3)) # [1, 3] print(t) # [1] ,只返回一个新列表。