有人知道我如何在Python中以java流API方式编写一个序列处理吗?我的想法是按照操作发生的顺序来编写操作:
myList.stream()
.filter(condition)
.map(action1)
.map(action2)
.collect(Collectors.toList());
在python中我可以
[action2(action1(item)) for item in my_list if condition(item)]
但这是相反的顺序。
我怎么能有正确顺序的东西呢?显然我可以使用变量,但那样我就得为每个部分结果找一个名字。
4条答案
按热度按时间vi4fp9gy1#
有一个库已经做了你所需要的,即惰性求值,操作的顺序和它的编写方式一样,还有很多其他的好东西,比如多进程或多线程Map/Reduce。它被命名为
pyxtension
,它是prod ready,通过单元测试覆盖,并在PyPi上维护。而且它是在MIT许可下发布的--所以你可以在任何商业项目中免费使用它。你的代码将被改写成这样的形式:以及
注意,最后一条语句
toList()
做的正是您所期望的--它收集数据,就像在Spark RDD中一样。g2ieeal72#
你可以自己写:
那么类似的语法是可能的:
mu0hgdu03#
PyPI上至少有两个模块:lazy-streams和pystreams
t98cgbkg4#
reversed()不就可以了吗?
[操作2(操作1(项目))用于反转的项目(my_list)if条件(项目)]