gpt4 book ai didi

Python - 将元组应用于功能工具 z.pipe 中的函数

转载 作者:行者123 更新时间:2023-12-05 05:10:44 24 4
gpt4 key购买 nike

我想使用一个接受 toolz.pipe 中的一些参数的函数,但数据输入是一个元组。我知道如何解决它,但我认为内置 python 库或 toolz 中一定有一些解决方案,我只是找不到它。

例子:

def my_func(a, b):
return a + b

result = pipe(
(10, 20),
my_func,
...,
)

For those unfamiliar with toolz, pipe is something like:

def pipe(val, *functions):
data = val
for fn in functions:
data = fn(data)
return data

我尝试了什么:

我知道如何解决它,例如这样:

result = pipe(
(10, 20),
lambda x: my_func(*x),
...,
)

但我觉得这很难看,我希望能够使用某种apply封装该 lambda 的函数。我这样定义我的 apply_:

from toolz import pipe

def my_func(a, b):
return a + b

def apply_(func):
return lambda x: func(*x)

result = pipe(
(10, 20),
apply_(my_func),
)
print(result)

但这似乎是非常基本的东西,我几乎相信它一定存在在内置 python 库或 toolz 包中..

问题:

是否有某种形式的 apply 包装器,就像我上面描述的那样 (apply_),它我忽略了吗?

最佳答案

例如:

import toolz
import itertools

def my_func(a, b):
return a + b


list(toolz.pipe(
[(10, 20), (30, 40)],
toolz.curry(itertools.starmap)(my_func)
))

输出:

[30, 70]

编辑我的初始解决方案错了,但我认为 itertools's starmap是要走的路。

关于Python - 将元组应用于功能工具 z.pipe 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56397194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com