如何从Python的Generator中打印args?

问题描述 投票:0回答:1

我想解决我大学的一门学科,因此,我必须创建一个具有parametres(* args)的函数。在那之后,我必须找到所有的平均值。继续使用数学类型..我们必须打印出每个元素的抽象平方-平均值,我必须使用Generator。例如:我有一个函数“ squares(* args)。当我像“ squares(3,4,5)”那样调用它时,我们找到平均值,例如4,然后开始抽象。 3-4、4、4、5,-4,但我们也需要平方。所以(3-4)** 2等我有这段代码,但是..不起作用,知道吗?

from statistics import mean
def squares(*args):
  avg=mean(args)
  i = 0
  while (i <= len(args)):
    yield (args[i]-avg)**2
    i=i+1
squares(2, 7, 3, 12)
for k in squares():
  print(k)
python generator yield args
1个回答
0
投票

问题在这里:

squares(2, 7, 3, 12)
for k in squares():
  print(k)

您第一次调用squares()-返回您丢弃的生成器对象(您没有将其分配给变量)。然后您再次调用它并遍历返回的生成器,但是由于您未传递任何参数,因此生成器为“空”(它没有任何结果)并且for循环的主体无法执行。

IOW,将其替换为:

squared = squares(2, 7, 3, 12)
for k in squared:
  print(k)

或者只是简单地:

for k in squares(2, 7, 3, 12):
  print(k)

注意:我没有测试您的代码,它可能还有其他问题...

© www.soinside.com 2019 - 2024. All rights reserved.