[英]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.