【发布时间】:2021-12-10 13:21:59
【问题描述】:
我无法理解这段代码,特别是它的语法。
a_list = [1,2,3,4,5,6]
pi = lambda s: {s:a for s, a in enumerate(a_list)}[s]
我了解 lambda 函数,但 [s] 在这里做什么?
【问题讨论】:
-
它正在访问刚刚通过键构建的字典中的值。
-
这只是写得很糟糕的代码 - 它在这里使用名称
s用于两个完全不同的目的,将整个列表变成字典只是为了从中选择一个项目是完全没有意义的字典。lambda s: a_list[s]会做同样的事情,而且要快得多。 -
是的,谢谢@jasonharper
-
旁注:avoid named lambdas,请改用
def。 -
你认为
[s]会做什么?如果您尝试分解代码,它会变得显而易见吗?尽管代码令人困惑,但我不确定您为什么会感到困惑。顺便说一句,欢迎来到 Stack Overflow!如果需要提示,请查看tour 和How to Ask。