从循环中的函数返回两个值

2024-04-26 13:07:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个功能:

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)值。你知道吗


Tags: in功能forreturndef错误npargs
1条回答
网友
1楼 · 发布于 2024-04-26 13:07:29
#!/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)

相关问题 更多 >