【发布时间】:2012-11-16 10:08:53
【问题描述】:
示例 1:
假设我有一个列表:[[1,2],[3,4]]。我可以使用两个 for 循环来打印:1、2、3、4。
示例 2:
所以,现在让我们假设我得到了一个输出,但我不知道 list1 中有多少嵌套列表:
list1 = [1, [1, 2, [3, 5, 6,[ .. ], ..., ] ] ] ]
所以,我的问题是如何以与第一个示例相同的格式打印出每个单独的数字。我现在正在处理一些结果,它给了我嵌套列表,但是函数的不同输入会给我不同数量的嵌套列表。
我能想到的就是这样做,但是在isinstance部分之后不知道该怎么做:
c = 0
for i in list1:
while c < len(list1):
if isinstance(i, list):
else:
print i
c += 1
谢谢
首次编辑
如果还有一种方法可以将所有嵌套列表解构为一个对我来说也可以的方法,但我很想知道这两个问题的答案。
【问题讨论】:
-
哇,谢谢大家。下面的所有答案都对我有用,但如果我计算正确,artsiom 的算法 big o 应该是线性的,这对我来说是理想的,因为我实际上在列表中有数千个嵌套列表。
-
太棒了。接受你最终使用的答案:)
-
哦,等等,没关系。所有大 o 符号的解都是 n^n。
-
@TTT:取决于你如何定义 N。如果 N = 所有列表中的元素数,那么我的解决方案是 Python yield from,它允许直接屈服于顶部生成器,而无需通过递归返回。这也可以通过巧妙地使用迭代器在 Python
标签: python algorithm list loops python-2.7