我是从 javascript 背景进入 python 的。在 JS 中,我们可以进行数组方法链接,这很棒(尤其是使用箭头函数):
someArray
.filter(x => x.count > 10)
.sort((a, b) => a.count - b.count)
.map(x => x.name)
Run Code Online (Sandbox Code Playgroud)
在python中是否可以使用数组方法链接之类的东西,如果不能,那为什么不呢?
在 Python 中,你会这样做:
from operator import attrgetter
map(lambda x: x.name,
sorted(filter(lambda x: x.count > 10, someArray),
key=attrgetter("count"))
Run Code Online (Sandbox Code Playgroud)
语法略有不同,但基本上应该是一样的。这回答了你的问题了吗?
编辑
如果你真的想要一个更“链式”的语法,你可以看看toolz. 从他们的文档:
>>> from toolz.curried import pipe, map, filter, get
>>> pipe(accounts, filter(lambda acc: acc[2] > 150),
... map(get([1, 2])),
... list)
Run Code Online (Sandbox Code Playgroud)
编辑 2
感谢@mpium 的建议PyFunctional,它似乎有一个更酷的语法:
from functional import seq
seq(1, 2, 3, 4)\
.map(lambda x: x * 2)\
.filter(lambda x: x > 4)\
.reduce(lambda x, y: x + y)
# 14
Run Code Online (Sandbox Code Playgroud)