python中如何将三维列表转化为二维列表?

A=[[[1,2],[1,3],[2,5]],[[2,4],[2,5],[2,6]],[[3,5],[3,6]]]
想转化为B=[[1,2],[1,3],[2,5],[2,4],[2,5],[2,6],[3,5],[3,6]]

阅读 9.7k
4 个回答

print reduce(lambda x, y: [x.extend(y), x][1], A, []) == B

sum(A, [])reduce(lambda x, y: x+y, A) 都可以实现这个功能,

希望你问问题之前,可以先自己稍稍思考一下,最不济,使用一个 for 循环也能实现吧

题目明确是三维数组还好办,
如果不确定每个元素的数组维度,需要做一个深度遍历
以下为python3代码:

def dfs(tree):
    for i in tree:
        if type(i) == list:
            yield from dfs(i)
        else:
            yield tree
            break


B = list(dfs(A))

用列表推导式就行
a=[[[1,2],[1,3],[2,5]],[[2,4],[2,5],[2,6]],[[3,5],[3,6]]]
[j for i in a for j in i]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏