[英]Python delineate recursive generator call/yield stack
我創建了下面的遞歸生成器,但我正在努力完全理解調用和yield棧。 有人能夠提供一些有關這實際在做什么的見解嗎?
lis = [1, 2, 3]
def parts(l=lis):
print(l)
if len(l) == 1:
yield l[0]
else:
for p in parts(l[1:]):
yield p
我在最后一行設置了斷點,無法跟蹤每一步發生的事情。 我想遞歸地[3]
然后[2]
然后[1]
。 這是對更復雜問題的簡化,因此,我不能像往常一樣遍歷列表。
從評論中,看起來你正在尋找類似的東西:
lis = [1, 2, 3]
def parts(l=lis):
yield l
if len(l) != 1:
yield from parts(l[1:])
yield l
然后你會得到結果:
for i in parts():
print(i)
我得到的結果是:
[1, 2, 3]
[2, 3]
[3]
[3]
[2, 3]
[1, 2, 3]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.