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!很好的解决方案@我已经更新了答案。