类似于FP的Haskell可以简单地绑定(var)名称,例如:
[(g y, h y) | x <- mylist, let y = f x]
Python可能做到了以下几点:
mylist = [f(x) for x in mylist]
mylist = [(g(y), h(y)) for y in mylist]
python3.8中的Walrus赋值似乎是对simplify list comprehensions的攻击:
[(y := f(x), g(y), h(y)) for x in mylist]
到目前为止,在这种情况下,什么是被认为是Python的方式?你知道吗
我认为
map
更适合于对列表的每个元素应用操作。你知道吗正确使用walrus操作符来创建2元组
是的,这比三元组版本更可怕。如果您想放弃walrus操作符,请使用
:=
应该避免的版本:或者更简单
我不会说海象操作员总是那么笨拙,但这似乎比它在这里的价值更麻烦。你知道吗
由于Python没有"let ... in ..." expressions,最简洁的方法就是编写函数并调用它。你知道吗
如果您真的喜欢将其作为一个线性函数,那么lambda函数可以达到相同的目的:
这是因为“let”表达式
let x = e1 in e2
等价于(lambda x: e2)(e1)
。当我仅限于编写表达式(传递给eval
)时,我有时不得不这样做,但它的可读性不强,所以我认为第一种解决方案更好。你知道吗相关问题 更多 >
编程相关推荐