![](/img/trans.png)
[英]How do I change all my values within a df column using a loop / lambda function (the simplest way of doing so)
[英]how do i make my function returns multiple values within my for-loop? (Beginner)
在求解系数p1
、 p2
和p3
后,我制作了一个 function ,它使用np.roots()
来计算三次 function 的根。 我试图让它返回多个根。
这是我的代码:
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)
output:
root 1
我想要的是:
root 1
root 2
.
.
.
root n
您不能在循环中准确地返回值: return
停止执行 function 并将控制权返回给调用者。 您必须预先计算要返回的所有内容,然后一次全部返回。
在这种情况下,您可以使用掩码从数组中 select 元素。 这特别容易,因为np.isreal
是矢量化的:它旨在一次对整个数组进行操作,而不仅仅是单个元素。 所以你可以摆脱整个循环并编写
return roots[np.isreal(roots)]
yield
关键字是return
的替代方法,它确实允许您返回多个值。 使用yield
将您的 function 变成一个生成器,您可以对其进行迭代,直到它停止产生值。 要制作生成器,只需在循环中将return
替换为yield
即可。
function 的两个版本都将返回一个可迭代的而不是单个值。 然后,您可以循环打印或一次全部打印。 循环如下所示:
for root in Q():
print(root)
要一次打印所有内容,您可以使用换行符连接字符串:
print('\n'.join(str(root) for root in Q()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.