这里说的情况是,嵌套列表的每一个元素都有同样的格式
如:
s=[[1,2],[1,2]]
,
如果
s=[[1,2],[[1,2]],[[[1,2],[1,2]]]]
,只能展开为
[1, 2, [1, 2], [[1, 2], [1, 2]]]
,不能再继续展开,是因为出现了整数、列表的混合元素的情况。
解法一:列表解析式
>>> s=[[1,2],[3,4]]
>>> ans=[j for i in s for j in i]
>>> ans
[1, 2, 3, 4]
解法二:np.flattten
>>> s=[[1,2],[3,4]]
>>> ans=np.array(s).flatten().tolist()
>>> ans
[1, 2, 3, 4]
解法三:sum
>>> s=[[1,2],[3,4]]
>>> ans=sum(s,[])
>>> ans
[1, 2, 3, 4]
解法四:itertools.chain
>>> from itertools import chain
>>> s=[[1,2],[3,4]]
>>> list(chain(*s))
[1, 2, 3, 4]
>>> list(chain.from_iterable(s))
[1, 2, 3, 4]
附:计算嵌套列表深度的方法
def depthCount(lst):
return isinstance(lst, list) and 1 + max(map(depthCount, lst), default=0)
s = [[1, 2], [3, 4]]
print(depthCount(s)) # 2
s = [0, [1, 2], [3, 4], [[5, 6]]]
print(depthCount(s)) # 3
参考:
counting-depth-or-the-deepest-level-a-nested-list-goes-to
嵌套列表展开