我正在跟进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))
谢谢!
答案 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