打印列表中所有嵌套列表的内容
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)
我正在使用 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)