簡體   English   中英

Python生成器生成迭代器

[英]Python generators to generate iterators

我正在跟蹤有關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))

謝謝!

您已經給出了所有內容,而只需要從該函數my_enumerate()返回即可

start = 0是默認值。 如果此參數中未提供任何值,則將從其他位置調用此函數。 因此它將為它分配0,但是在這里,當您調用此函數時,您將傳遞1作為參數,因此start變量現在變為1。

for循環中的打印行顯示了必須打印的方式,並且給定的輸出使其更加清晰。

您已經給了lessons數組,您必須在其上進行迭代並從函數返回結果,但是在這里,您必須在調用for循環時從函數中一次又一次返回,因此,為此,我們將使用yield關鍵字。

您的功能將如下所示:

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

這段代碼在做什么?

它只是迭代提供列表,然后從開始變量和列表元素的函數返回,然后遞增開始,所以下次它具有該列表的下一個元素

要詳細了解收益率概念:單擊此處

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM