打印列表中所有嵌套列表的内容

Printing contents of all nested lists in a list

我正在使用 Python。 给定一个列表,我想打印原始列表中所有子列表的内容。 因此,例如,如果我有一个列表:

L = ["0", ["(1,0)"], ["(2,0)", ["(2,1,0)", ["(2,1,1,0)"], ["(2,1,1,1)"]]], ["(3,0)"]]

那么我希望我的输出是:

0
(1,0)
(2,0)
(2,1,0)
(2,2,2,0)
(2,1,1,1)
(3,0)

现在,我使用了以下代码:

def Print_Nested_List(s):
a = 0
for a in range(len(s)):
    if type(s[a]) != type([]):
        print(s[a])
    else:
        b = 0
        for b in range(len(s[a])):
            Print_Nested_List(s[a])
L = ["0", ["(1,0)"], ["(2,0)", ["(2,1,0)", ["(2,1,1,0)"], ["(2,1,1,1)"]]], ["(3,0)"]]
Print_Nested_List(L)

我得到以下输出:

0
(1,0)
(2,0)
(2,1,0)
(2,1,1,0)
(2,1,1,1)
(2,1,0)
(2,1,1,0)
(2,1,1,1)
(2,1,0)
(2,1,1,0)
(2,1,1,1)
(2,0)
(2,1,0)
(2,1,1,0)
(2,1,1,1)
(2,1,0)
(2,1,1,0)
(2,1,1,1)
(2,1,0)
(2,1,1,0)
(2,1,1,1)
(3,0)

很明显,你可以看到虽然打印了所有的内容,但是有些东西打印了多次。

现在,为什么会发生这种情况,我该如何修复我的代码?

注意:我只是一个编码菜鸟,任何帮助都会很棒。有更好的方法吗?非常感谢:)

你可以在这里使用recursion

def recurse_(lst):
    for i in lst:
        if isinstance(i, list):
            recurse_(i)
        else:
            print(i)

recurse_(L)

0
(1,0)
(2,0)
(2,1,0)
(2,1,1,0)
(2,1,1,1)
(3,0)

使用 isinstance 检查类型,如果它是 list 使用 for 循环并对列表的每个元素递归调用方法。

def print_list(lst):
    if isinstance(lst, list):
        for x in lst:
            print_list(x)
    else:
        print(lst)

print_list(L)

输出:

0
(1,0)
(2,0)
(2,1,0)
(2,1,1,0)
(2,1,1,1)
(3,0)