import numpy
def rtpairs(R,T):
for i in range(numpy.size(R)):
o=0.0
for j in range(T[i]):
o +=2*(numpy.pi)/T[i]
yield R[i],o
R=[0.0,0.1,0.2]
T=[1,10,20]
for r,t in genpolar.rtpairs(R,T):
plot(r*cos(t),r*sin(t),'bo')
这个程序应该是一个生成器,但是我想先让它为pheta返回一些值来检查我是否做了正确的事情(见下面)
import numpy as np
def rtpairs (R=None,T=None):
R = np.array(R)
T = np.array(T)
for i in range(np.size(R)):
pheta = 0.0
for j in range(T[i]):
pheta += (2*np.pi)/T[i]
return pheta
那么 我在提示符中键入import omg作为o
x = [o.rtpairs(R=[0.0,0.1,0.2],T=[1,10,20])]
# I tried to collect all values generated by the loops
结果只给了我一个2π的值。。。我有一个习惯,检查我的代码在中途通过,有没有办法让我得到一个列表的角度使用上述代码?我不明白为什么我必须使用生成器结构来检查(第一个),但是我不能使用普通的循环方法来检查。你知道吗
正常回路,例如
x=[i for i in range(10)]
x=[0,1,2,3,4,5,6,7,8,9]
在这里我可以看到我应该得到的值的列表。你知道吗
您切换到
return
而不是yield
。它不再是发电机了,它在第一次返回时就停止了。换回来。你知道吗这将
rtpairs
返回值包装在一个1元素列表中。那不是你想要的。如果要从生成器中提取所有元素并将它们存储在列表中,请调用生成器上的list
:相关问题 更多 >
编程相关推荐