我试图通过递归扫描嵌套列表(下面的代码)。如果嵌套列表以列表停止,则此方法正常。 示例(python 3):
ok = [1,2,3,4,[5,6]] works fine i.e. output is 1 2 3 4 5 6
nok = [1,2,3,4,[5,6],7] does not print the "7". i.e. output is 1 2 3 4 5 6
可能有更好的方法来展平嵌套列表。我只想了解我在这里缺少什么,即“7”在哪里?
def print_list (x):
for i in x:
if isinstance (i, list):
return (print_list(i))
else:
print (i)
def main():
a=[1,2,3,4,[5,6],7]
print_list (a)
if __name__ == "__main__":
main()
答案 0 :(得分:1)
在到达外部列表的最后一个元素(7
)之前返回:
print_list(i)
而不是
return (print_list(i))
应该这样做。 return
在那里结束了这个功能!
答案 1 :(得分:0)
只需删除return
,即可正常使用。
def print_list (x):
for i in x:
if isinstance (i, list):
print_list(i)
else:
print (i)
def main():
a=[1,2,3,4,[5,6],7]
print_list (a)
if __name__ == "__main__":
main()
输出:
1
2
3
4
5
6
7
答案 2 :(得分:0)
删除return
会使其正常工作。
def print_list (x):
for i in x:
if isinstance (i, list):
print_list(i)
else:
print (i)
def main():
a=[1,2,3,4,[5,6],7]
print_list (a)
if __name__ == "__main__":
main()