lambda *x 什么意思?

新手上路,请多包涵

看到这样一行程序:

   lambda *x: x[-1],

以前只写过lambda x: x + 1这种,不知道还可以在变量前加一个*。

没找到相关的说明,自己试了一下,也没试出到底加个*是做什么的。

阅读 5.1k
3 个回答

*x 表示多个位置参数,你贴出的代码表示返回最后一个位置参数
**x 表示多个关键字参数,这些都是py的基础知识。
类似的用法go,js中用像...符号表示变长或收缩或展开运算,php则用*等等

lambda *x: x[-1]
这里如果把*x写成*args你可能就明白了
等价于

def unnamed(*x):
    return x[-1]

print(unnamed(1, 2, 3))

输出是 3
如果不明白可以搜一下*args**kwargs的含义

其实就是任意数量的参数,比如:

lambda *x: sum(x)

就是参数求和
lambda表达式理解不了的话,其实可以把他写成def的形式

a = lambda *x: x[-1]

def a(*x):
    return x[-1]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题