对于对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)
答案 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]
但我重申:不要这样做。