【问题标题】:Python generators to generate iterators用于生成迭代器的 Python 生成器
【发布时间】:2018-11-01 14:50:38
【问题描述】:

我正在跟进 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))

谢谢!

【问题讨论】:

  • start=0 表示具有默认值的参数。仅由您指定要从其开始迭代的索引(我猜)。它与要实现的实际生成器无关。

标签: python iterator generator


【解决方案1】:

你已经给出了一切,你只需要从那个函数 my_enumerate() 中返回

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

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

您已经给出了课程数组,您必须在该数组上进行迭代并从函数返回结果,但在这里您必须一次又一次地从函数返回,因为它正在调用 for 循环,因此为此目的,我们将使用yield 关键字。

你的函数会是这样的:

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

这段代码在做什么?

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2018-06-04
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    相关资源
    最近更新 更多