如何在Python中展开深层列表?

2024-05-18 12:23:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到一个嵌套列表作为输入。
简化版如下。在

myList=[[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]]]

我想把它分解成一个简单的列表。
我可以这样做--

^{pr2}$

正如所希望的那样,simpleList是

[[1, 2, 3], [4, 5, 6], [2, 3, 4], [3, 4, 5], [4, 6, 7], [5, 7, 9]]

我的问题:-
我所做的也许是一种初学者的编码方法。
有没有一种更专业、更高效(而且是pythonic)的方法来解压这个嵌套列表?
谢谢。在

编辑:—
我的方法不适用于深度嵌套的列表。
e、 g.[[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]],[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9],[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]]]]
参考答案的评论。在


Tags: 方法编辑列表专业评论pythonic初学者分解成
3条回答

使用itertools中的chain

from itertools import chain
myList=[[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]]]
print(list(chain.from_iterable(myList)))   #print(list(chain(*myList)))

输出:

^{pr2}$
myList=[[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]]]
reduce(lambda x, y: x+y, myList)

输出:

^{pr2}$

您可以使用recursive函数来求解任意深度的嵌套列表。在

def unwrap_list(mylist, result):
   if any(isinstance(i, list) for i in mylist):
      for value in mylist:
         unwrap_list(value, result)
   else:
      result.append(mylist)

mylist = [[[1,2,3],[4,5,6]],[[2,3,4],[3,4,5]],[[4,6,7],[5,7,9]]]
result = []
unwrap_list(mylist, result)
print(result)

另一种方法是使用生成器。在

^{pr2}$

相关问题 更多 >

    热门问题