【问题标题】:how to print args from a Generator in Python?如何从 Python 中的生成器打印参数?
【发布时间】:2020-03-24 14:20:31
【问题描述】:

我想在我的大学解决一个主题,所以我必须创建一个带有参数(*args)的函数。之后,我必须找到所有这些的平均值。继续数学类型..我们必须打印出每个元素的抽象平方 - 平均值,我必须使用生成器。例如: 我有函数“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】:

    这里的问题:

    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)
    

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

    【讨论】:

    • 嘿伙计.. 非常感谢您的解释!欣赏它:)
    • @EvilTwin 不客气。不过,这只是对未来问题的提示:“不起作用”是对问题的完全无用的描述。在这个确切的情况下,至少有这个明显的错误,但下次需要时间来正确解释它如何它“不起作用”(错误的结果 - 以及为什么它们是错误的,或错误消息和如果您遇到异常等,则进行完整的回溯)。
    猜你喜欢
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    相关资源
    最近更新 更多