像 Haskell 这样的 FP 可以简单地绑定一个 (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]
Python 3.8 中的 Walrus 赋值似乎是一种 hack简化列表理解 :
[(y := f(x), g(y), h(y)) for x in mylist]
在这种情况下,到目前为止被认为是Pythonic的方式是什么?
使用海象运算符创建 2 元组的正确用法是
mylist = [(g(y:=f(x)), h(y)) for x in mylist]
是的,这比三元组版本更可怕。如果您想放弃海象运算符,请使用以下版本:=
本来应该避免:
mylist = [(g(y), h(y)) for x in mylist for y in [f(x)]]
或者更简单地说
mylist = [(g(y), h(y)) for y in map(f, mylist)]
我不会说海象操作员是always如此笨拙,但在这里似乎比它值得的麻烦更多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)