Python 如何使函数在for循环中返回多个值?(初学者)
我做了一个函数,在我解出系数Python 如何使函数在for循环中返回多个值?(初学者),python,numpy,jupyter-notebook,Python,Numpy,Jupyter Notebook,我做了一个函数,在我解出系数p1、p2和p3后,使用np.roots()来计算三次函数的根。我试图让它返回多个根 这是我的密码: 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(roo
p1
、p2
和p3
后,使用np.roots()
来计算三次函数的根。我试图让它返回多个根
这是我的密码:
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
停止函数的执行并将控制权返回给调用方。你必须预先计算所有你想要返回的东西,然后一次返回所有的东西
在这种情况下,可以使用遮罩从数组中选择元素。这尤其容易,因为它是矢量化的:它意味着一次操作整个数组,而不仅仅是单个元素。这样就可以去掉整个循环并编写
return roots[np.isreal(roots)]
yield
关键字是return
的替代选项,它允许您返回多个值。使用yield
将函数转换为生成器,您可以对其进行迭代,直到它停止生成值。要制作生成器,只需将循环中的return
替换为yield
函数的两个版本都将返回一个iterable而不是单个值。然后可以循环打印,也可以一次全部打印。循环如下所示:
for root in Q():
print(root)
要一次打印所有内容,可以使用换行符连接字符串:
print('\n'.join(str(root) for root in Q()))