首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中打印列表的非递归方式

在Python中打印列表的非递归方式
EN

Stack Overflow用户
提问于 2009-07-22 06:42:57
回答 5查看 485关注 0票数 2

有没有办法以非递归方式执行以下操作:

代码语言:javascript
复制
my_list = [
    "level 1-1",
    "level 1-2",
    "level 1-3",
        [
            "level 2-1",
            "level 2-2",
            "level 2-3",
            [
                "level 3-1",
                "level 3-2"
            ]
        ],
    "level 1-4",
    "level 1-5"
    ]


def print_list(the_list, indent_level=0):
    for item in the_list:
        if isinstance(item, list):
            print_list(item, indent_level + 1)
        else:
            print "\t" * indent_level, item


print_list(my_list)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-22 07:07:22

代码语言:javascript
复制
stack = [(my_list, -1)]
while stack:
    item, level = stack.pop()

    if isinstance(item, list):
        for i in reversed(item):
            stack.append((i, level+1))
    else:
        print "\t" * level, item
票数 4
EN

Stack Overflow用户

发布于 2009-07-22 07:05:20

代码语言:javascript
复制
def print_list(the_list, indent_level=0):
    stack = [iter(the_list)]
    while stack:
        try:
            item = stack[-1].next()
        except StopIteration:
            stack.pop()
            indent_level -= 1
            continue
        if isinstance(item, list):
            indent_level += 1
            stack.append(iter(item))
        else:
            print "\t" * indent_level, item
票数 2
EN

Stack Overflow用户

发布于 2009-07-22 11:58:11

这是Martin Löwis版本的一个变体,它使用for/else代替手动捕获StopIteration,使用len(stack)代替跟踪缩进级别。

代码语言:javascript
复制
def print_list(the_list):
    stack = [iter(the_list)]
    while stack:
        for item in stack[-1]:
            if isinstance(item, (list, tuple)):
                stack.append(iter(item))
                break
            else:
                print '\t' * (len(stack)-1), item
        else:
            stack.pop()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1163429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档