gpt4 book ai didi

python - 如何让我的函数在 for 循环中返回多个值? (初学者)

转载 作者:行者123 更新时间:2023-12-04 08:00:42 24 4
gpt4 key购买 nike

我做了一个使用 np.roots() 的函数在求解系数后计算三次函数的根 p1 , p2 , 和 p3 .我试图让它返回多个根。
这是我的代码:

def Q():
.
.
.
coeff = [1,p1, p2, p3]
roots = np.roots(coeff)

#prints out the real positive root

for i in range(0, len(roots)):
if np.isreal(roots[i]):
return np.real(roots[i])

return

root = Q(T1,P1,Tc,Pc)
print(root)
输出:
root 1
我想要的是:
root 1
root 2
.
.
.
root n

最佳答案

你不能在循环中准确地返回值:return停止函数的执行并将控制权返回给调用者。您必须预先计算要返回的所有内容,然后一次性全部返回。
在这种情况下,您可以使用掩码从数组中选择元素。这特别容易,因为 np.isreal 是矢量化的:它意味着一次对整个数组进行操作,而不仅仅是单个元素。所以你可以摆脱整个循环并写

return roots[np.isreal(roots)]
yield关键字是 return 的替代方法这确实允许您返回多个值。使用 yield将您的函数变成一个生成器,您可以对其进行迭代,直到它停止产生值。要制作发电机,只需替换 returnyield在你的循环中。
该函数的两个版本都将返回一个可迭代的而不是单个值。然后,您可以循环打印或一次性打印。循环如下所示:
for root in Q():
print(root)
要一次打印所有内容,您可以使用换行符连接字符串:
print('\n'.join(str(root) for root in Q()))

关于python - 如何让我的函数在 for 循环中返回多个值? (初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66486136/

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