【问题标题】:Unable to print out generator as a list无法将生成器打印为列表
【发布时间】:2016-12-15 07:27:51
【问题描述】:

我制作了一个示例生成器,它的行为应该给我正确的结果,但是每当我在这种情况下尝试打印它时,6 次迭代,它只打印出一个,而且是随机的。我想要全部 6 个,就好像我正在以相同的格式制作一个列表。谢谢!

代码如下:

import random

names = ['Mike', 'John', 'Tom', 'Bill', 'Ted']
majors = ['Math', 'CS', 'Chem', 'History', 'Arts']

def people_generator(num_people):
    for i in xrange(num_people):
        person = {
            'id number': i,
            'name': random.choice(names),
            'major': random.choice(majors)
        }
        yield person

folk = people_generator(6)
print list(folk)

【问题讨论】:

  • 格式化您的代码。
  • 它为您提供 dict 列表作为结果,对于 people_generator(6) 它在列表中提供 6 个 dicts。那你期待什么输出呢?
  • 产量超出了 Vadim 指出的循环范围,谢谢。

标签: python-2.7 list generator


【解决方案1】:

很可能您在for 循环之外有yield 语句 - 结果,生成器仅返回最后一个person。将语句放在循环中将解决问题。

【讨论】:

  • 在正确格式化问题之前回答。格式化代码不存在所述问题。
猜你喜欢
  • 2022-01-07
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 2021-04-26
  • 2013-03-29
相关资源
最近更新 更多