Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将嵌套列表的列作为新的独立嵌套列表获取_Python - Fatal编程技术网

Python 如何将嵌套列表的列作为新的独立嵌套列表获取

Python 如何将嵌套列表的列作为新的独立嵌套列表获取,python,Python,我有这个任务,我必须提取嵌套列表的列,并用它们创建一个新的嵌套列表。例如,如果我有以下列表: m1 = [[1, 2, 4],[3, 0, 6],[0, 5, 1]] 输出将是: new_list = [[1, 3, 0], [2, 0, 5], [4, 6, 1]] new_list = [[1,3,0],[2,0,5],[4,6,1],[5,5,5]] 或者如果: m2 = [[1, 2, 4, 5],[3, 0, 6, 5],[0, 5, 1, 5]] 那么输出将是

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

  m1 = [[1, 2, 4],[3, 0, 6],[0, 5, 1]]
输出将是:

  new_list = [[1, 3, 0], [2, 0, 5], [4, 6, 1]]
  new_list = [[1,3,0],[2,0,5],[4,6,1],[5,5,5]]
或者如果:

  m2 = [[1, 2, 4, 5],[3, 0, 6, 5],[0, 5, 1, 5]]
那么输出将是:

  new_list = [[1, 3, 0], [2, 0, 5], [4, 6, 1]]
  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 = [[i, j, k] for i, j, k in zip(*m1)]
更稳健的解决方案是:

new_list = [list(rows) for rows in zip(*m1)]
您可以使用来同时迭代多个列表

new_list = [[i, j, k] for i, j, k in zip(*m1)]
更稳健的解决方案是:

new_list = [list(rows) for rows in zip(*m1)]
您可以使用numpy:

import numpy as np

m1 = [[1, 2, 4],[3, 0, 6],[0, 5, 1]]
new_array = np.transpose(m1)
print(new_array)
结果:

[[1 3 0] 
 [2 0 5] 
 [4 6 1]]
您可以使用numpy:

import numpy as np

m1 = [[1, 2, 4],[3, 0, 6],[0, 5, 1]]
new_array = np.transpose(m1)
print(new_array)
结果:

[[1 3 0] 
 [2 0 5] 
 [4 6 1]]

使用列表理解:

new_list=[[l[i] for l in m1] for i in range(len(m1[0]))]

使用列表理解:

new_list=[[l[i] for l in m1] for i in range(len(m1[0]))]

你有一个额外的循环。这样做

m2 = [[1, 2, 4, 5],[3, 0, 6, 5],[0, 5, 1, 5]]
def get_all_columns(matrix):
        new_list = [] 
        i = 0
        lista = m2[1]
        while i < len(lista):   
                lst2 = [item[i] for item in matrix]
                new_list.append(lst2) 
                i += 1 
        return new_list 
print(get_all_columns(m2))
m2=[[1,2,4,5],[3,0,6,5],[0,5,1,5]]
def get_所有_列(矩阵):
新列表=[]
i=0
lista=m2[1]
而我
您有一个额外的循环。这样做

m2 = [[1, 2, 4, 5],[3, 0, 6, 5],[0, 5, 1, 5]]
def get_all_columns(matrix):
        new_list = [] 
        i = 0
        lista = m2[1]
        while i < len(lista):   
                lst2 = [item[i] for item in matrix]
                new_list.append(lst2) 
                i += 1 
        return new_list 
print(get_all_columns(m2))
m2=[[1,2,4,5],[3,0,6,5],[0,5,1,5]]
def get_所有_列(矩阵):
新列表=[]
i=0
lista=m2[1]
而我
尝试以下代码:

def get_all_columns(matrix):
    new_list = []
    for i in range(len(matrix)):
        new_list.append([])
    for l in matrix:
        for j in range(len(l)):
            new_list[j].append(l[j])
    return new_list
请尝试以下代码:

def get_all_columns(matrix):
    new_list = []
    for i in range(len(matrix)):
        new_list.append([])
    for l in matrix:
        for j in range(len(l)):
            new_list[j].append(l[j])
    return new_list

这不适用于可变尺寸,对吗?非常优雅和python!很好的解决方案@joostblack我已经更新了答案。这不适用于可变维度,对吗?非常优雅和python!很好的解决方案@我已经更新了答案。