Python 中类似于 Javascript 的数组方法链接?

Ana*_*dus 4 python

我是从 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中是否可以使用数组方法链接之类的东西,如果不能,那为什么不呢?

Fel*_*lix 7

在 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)

  • 您可能还想查看类似于 toolz 的 [PyFunctional](https://www.pyfunctional.org) (3认同)