簡體   English   中英

在循環中從函數返回兩個值

[英]Returning two values from a function in a loop

我有一個功能:

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_resultfunc內具有所有這些result值,並且對於final_error相同?

如果我打電話

results = [func(*args) for args in parameters]

它工作正常,但results現在同時包含錯誤和結果!

我希望final_result包含不同參數的a+b+c值,而final_error包含np.sqrt(a+b+c)

#!/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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM