如何用python编写自定义生成器函数

我有这个

for A in [0, -0.25, 0.25, -0.5, 0.5, -0.75, 0.75, -1.0, 1.0, -1.25, 1.25, -1.5, 1.5, -1.75, 1.75, -2.0, 2.0, -2.25, 2.25, -2.5, 2.5, -2.75, 2.75, -3.0, 3.0, -3.25, 3.25, -3.5, 3.5, -3.75, 3.75, -4.0, 4.0, -4.25, 4.25, -4.5, 4.5, -4.75, 4.75, -5.0, 5.0]:

是否可以使用发电机功能?我现在有这个:

def frange(start, stop, step=1.0):
    while start <= stop:
        yield start
        start += step

并使用这样的:

for error in self.frange(-2.5, 2.5, 0.25):

但它的回报[-2.5,2.25,…,0,2.25,2.5],对于我的程序,它很难计算.因为我发现价值几乎为零,但我不知道它可能有多少组合.

我需要从零开始,下一个值必须是减号和正值.
比如[0,-0.25,0.25 …].

最佳答案 也许你的意思是发电机而不是lambda:

def opposing_numbers(increment, maximum):
     yield 0
     value = increment
     while value <= maximum:
         yield -value
         yield value
         value += increment

然后将其称为:

opposing_numbers(0.25, 5)
点赞