Python生成器生成迭代器

时间:2018-05-22 18:38:13

标签: python iterator generator

我正在跟进Python基础的在线课程,并且陷入关于生成器的测验: 我可以访问解决方案,但我不想直接看到它。 我想输出如下,不使用枚举但使用生成器。 我已经在预编写的一段代码下面开始了,但我无法理解为什么他们把start = 0。 有人可以帮助我获得一些线索吗?我仍然想自己做输出,但不知道我应该怎么开始。

预期产出:

Lesson 1: Why Python Programming
Lesson 2: Data Types and Operators
Lesson 3: Control Flow
Lesson 4: Functions
Lesson 5: Scripting

代码:

lessons = ["Why Python Programming", "Data Types and Operators", "Control Flow", "Functions", "Scripting"]

def my_enumerate(iterable, start=0):
    # Implement your generator function here


for i, lesson in my_enumerate(lessons, 1):
    print("Lesson {}: {}".format(i, lesson))

谢谢!

1 个答案:

答案 0 :(得分:0)

你已经提供了所有东西,你只需要从该函数返回my_enumerate()

start = 0 是默认值。如果此参数中没有提供值,则从其他地方调用此函数。所以它会将它赋值为0,但是当你调用这个函数时,你传递1作为参数,所以start变量现在变为1。

for循环中的打印行显示了您必须打印的方式,并且您的给定输出使其更清晰。

你已经给了数组课程,你必须在其上迭代并从函数返回结果,但是在这里你必须一次又一次地从函数返回,因为它调用了for循环,所以为了这个目的,我们将使用产量关键字。

你的功能将是这样的:

def my_enumerate(iterable, start=0):
    for a in iterable:
      yield (start, a)
      start += 1

这段代码在做什么?

它只是迭代提供列表并从启动变量和列表元素的函数返回,然后递增开始,所以下次它具有该列表的下一个元素

详细了解收益率概念:点击here