是的,我知道这个主题以前已经被讨论过:
但据我所知,除了一个解决方案外,所有的解决方案都不能处理像[[[1, 2, 3], [4, 5]], 6]
这样的列表,期望的输出是[1, 2, 3, 4, 5, 6]
(或者更好的方式是迭代器)。
我看到的唯一一个可以处理任意嵌套的解决方案在这个问题中找到:
def flatten(x):
result = []
for el in x:
if hasattr(el, "__iter__") and not isinstance(el, basestring):
result.extend(flatten(el))
else:
result.append(el)
return result
这是最好的方法吗?我有遗漏了什么吗?有什么问题吗?
list
应该是同质的)并不意味着这是Python的问题,我们需要为这样的任务建立一个内置功能。 - Azat Ibrakov