Генераторы Python для генерации итераторов - PullRequest
0 голосов
/ 22 мая 2018

Я слежу за онлайн-курсом по основам 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 голосов
/ 22 мая 2018

Вы дали все, вам просто нужно вернуться из этой функции my_enumerate ()

start = 0 для значения по умолчанию.Если в этом параметре нет значения, когда эта функция будет вызываться откуда-то еще.Таким образом, он присваивает ему значение 0, но здесь, когда вы вызываете эту функцию, вы передаете 1 в качестве параметра, поэтому переменная начала становится равной 1.

Ваша строка для печати в цикле for показывает то, что у вас естьраспечатать, и ваш заданный вывод делает это более понятным.

Вы дали массив уроков, в котором вам нужно просто выполнить итерацию и вернуть результат из функции, но здесь вы должны возвращаться снова и снова из функции, как онавызывает цикл for, поэтому для этой цели мы будем использовать ключевое слово yield .

Ваша функция будет выглядеть следующим образом:

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

Что делает этот код?

Это просто итерация по предоставлению списка и возвращению из функции, которая запускает переменную и элемент списка, и затем увеличение начала, так что в следующий раз у него будет следующий элемент этого списка

Чтобы понятьподробнее о концепции доходности: нажмите здесь

...