python - 如何将嵌套列表的列作为新的单独嵌套列表获取
问题描述
我有这个任务,我必须提取嵌套列表的列并用它们创建一个新的嵌套列表。例如,如果我有这个列表:
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]]
这给出了正确的列表,但是,它循环了太多次。
解决方案
您可以使用zip
同时迭代多个列表。
new_list = [[i, j, k] for i, j, k in zip(*m1)]
一个更强大的解决方案是:
new_list = [list(rows) for rows in zip(*m1)]
推荐阅读
- javascript - 从页面源代码中获取部分字符串(信息存在于 HTML 中)
- c# - 如何使用信任库和密钥库在 C# 中存储证书以建立与 SOAP 服务的 SSL 安全连接
- php - Symfony - Doctrine 的可选继承
- mysql - MySQL DATETIME 仍然取决于时区
- java - 运行 JUnit 5 测试套件加载 Spring 上下文
- python - 如果它们不包含在多边形中,则覆盖 pcolormesh 中的点
- r - 从长格式到宽格式具有相同的 id
- mysql - 在 Laravel 中如何通过 Model 知道表列是否为外键?
- variables - 两个警告“此局部变量与全局变量同名”和“没有匹配 IF 的 ELSE”
- javascript - 如何在 Angular Firebase 中向前台发送后台通知以在 Angular 9 webapp 中显示通知?