簡體   English   中英

Python描述了遞歸生成器調用/ yield棧

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

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