如何通过归约检查python代码?

2024-06-28 11:37:45 发布

您现在位置:Python中文网/ 问答频道 /正文

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]

在这里我可以看到我应该得到的值的列表。你知道吗


Tags: 代码inimportnumpynone列表forsize
1条回答
网友
1楼 · 发布于 2024-06-28 11:37:45
            return pheta

您切换到return而不是yield。它不再是发电机了,它在第一次返回时就停止了。换回来。你知道吗

x = [o.rtpairs(R=[0.0,0.1,0.2],T=[1,10,20])]

这将rtpairs返回值包装在一个1元素列表中。那不是你想要的。如果要从生成器中提取所有元素并将它们存储在列表中,请调用生成器上的list

x = list(o.rtpairs(R=[0.0,0.1,0.2],T=[1,10,20]))

相关问题 更多 >