我有一个功能:
def func(a,b,c):
result = a+b+c
error = np.sqrt(a+b+c)
return result, error
然而,我有多对a,b,c用于将该函数称为:
parameters = [(a1,b1,c1),
(a2,b2,c2),
(a3,b3,c3)]
final_result,final_error = [func(*args) for args in parameters]
我收到错误ValueError: too many values to unpack
如何让final_result
在result
内获得func
的所有值,为final_error
获取相同的值?
如果我只是打电话
results = [func(*args) for args in parameters]
它运行正常,但results
现在包含错误和结果!
我希望final_result
包含不同参数的a+b+c
值,final_error
包含np.sqrt(a+b+c)
的值。
答案 0 :(得分:2)
#!/usr/bin/env python3
# coding: utf-8
import numpy as np
def func(a, b, c):
result = a+b+c
error = np.sqrt(a+b+c)
return result, error
parameters = [(3,2,1),
(4,5,6),
(7,8,9)]
l = [func(*p) for p in parameters]
final_result, final_error = zip(*l)
print(l)
print(final_result)
print(final_error)
,并提供:
[(6, 2.4494897427831779), (15, 3.872983346207417), (24, 4.8989794855663558)]
(6, 15, 24)
(2.4494897427831779, 3.872983346207417, 4.8989794855663558)