lambda函数用于inplace方法/函数

时间:2017-09-20 02:43:20

标签: python lambda

对于对x.sort()np.random.shuffle(x)等对象进行操作的函数,要在lambda函数中使用它,我们需要找到返回类似sorted(x)的副本的相应函数或np.random.permutation(x)

如果没有这样的相应功能,有没有办法将它与lambda函数一起使用? E.g:

def f(x):
    x.sort()     #or x.copy().sort()
    return(x)

1 个答案:

答案 0 :(得分:2)

根本问题不是.sort就地工作,而是返回None 。你可以使用or表达式的返回值来解决这个问题:

>>> x = [3,1,2]
>>> (lambda a: a.sort() or a)(x)
[1, 2, 3]

所以,可以执行此操作,但应该 : 只需使用正常功能。 lambda函数的唯一优势是它是匿名的。这是一个非常小的优势,其中一个主要是方便。

而且,只是为了好玩:

>>> import random
>>> (lambda a: random.shuffle(a) or a)(x)
[2, 3, 1]
>>> (lambda a: random.shuffle(a) or a)(x)
[2, 1, 3]
>>> (lambda a: random.shuffle(a) or a)(x)
[3, 1, 2]

但我重申:不要这样做