gpt4 book ai didi

python - 将不可迭代变量传递给使用 map() 评估的函数

转载 作者:太空狗 更新时间:2023-10-30 02:04:48 27 4
gpt4 key购买 nike

我在 python 中工作并尝试转换具有此结构的函数:

def func(g,h,iterable):
return iterable*(g+h)

for iterable in range(20):
print func(2,3,iterable)

进入映射函数:

def func(g,h,iterable):
return iterable*(g+h)

print map(func,2,3,range(20)) #does not work...

我遇到的问题是通过 map() 函数传递常量,目前我不知道该怎么做。

我想要这个结构,这样我就可以轻松地使用 Ipython 并行工具。

假设:

  • 所有可迭代对象的实际函数完成需要大约 1.5 小时(因此需要使用并行 map() 函数
  • 函数复杂,无法使用列表理解

本质上,如果不是很明显的话,我是一名 MATLAB 程序员,正在转向 python 并寻找 matlab 中 parfor 函数的良好替代品。

最佳答案

一方面,如果您将函数映射到 range 上,则没有参数是可迭代的。

对于您的问题,您可以使用 functools.partial 将位置参数(从左到右)绑定(bind)到函数。

def func(g,h,i):
return i*(g+h)

print map(functools.partial(func, 2,3), range(20))

# [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

要绑定(bind)任何位置参数,请使用 hkpeprah 的回答中所述的 lambda 表达式。

关于python - 将不可迭代变量传递给使用 map() 评估的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16924469/

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