首页 > 解决方案 > 如何将嵌套列表的列作为新的单独嵌套列表获取

问题描述

我有这个任务,我必须提取嵌套列表的列并用它们创建一个新的嵌套列表。例如,如果我有这个列表:

  m1 = [[1, 2, 4],[3, 0, 6],[0, 5, 1]]

输出将是:

  new_list = [[1, 3, 0], [2, 0, 5], [4, 6, 1]]

或者如果:

  m2 = [[1, 2, 4, 5],[3, 0, 6, 5],[0, 5, 1, 5]]

然后输出将是:

  new_list = [[1,3,0],[2,0,5],[4,6,1],[5,5,5]]

它采用列并用它们创建新的嵌套列表。

这是我尝试过的代码:

    def get_all_columns(matrix):
        new_list = [] 
        for lista in matrix:
            i = 0
            while i < len(lista):   
                lst2 = [item[i] for item in matrix]
                new_list.append(lst2) 
                i += 1 
         return new_list 
    print(get_all_columns(m5))

这给了我输出:

    new_list = [[1, 3, 0], [2, 0, 5], [4, 6, 1], [1, 3, 0], [2, 0, 5], [4, 6, 1], [1, 3, 0], [2, 0, 5], [4, 6, 1]]

这给出了正确的列表,但是,它循环了太多次。

标签: python

解决方案


您可以使用zip同时迭代多个列表。

new_list = [[i, j, k] for i, j, k in zip(*m1)]

一个更强大的解决方案是:

new_list = [list(rows) for rows in zip(*m1)]

推荐阅读