python - 如何在python中创建新列表
问题描述
我想从一个列表创建新列表。这是我正在处理的示例列表:
matrixlist = [['Matrix', '1'], ['1', '4', '6'], ['5', '2', '9'], ['Matrix', '2'], ['2', '6'], ['1', '3'], ['8', '6'], ['Matrix', '3'], ['5', '6', '7', '9'], ['1', '4', '2', '3'], ['8', '7', '3', '5'], ['9', '4', '5', '3'], ['Matrix', '4'], ['7', '8'], ['4', '6'], ['2', '3']]
我用 for 循环这样拆分它们:
matrix1 = [['1', '4', '6'], ['5', '2', '9']]
matrix2 = [['2', '6'], ['1', '3'], ['8', '6']]
matrix3 = [['5', '6', '7', '9'], ['1', '4', '2', '3'], ['8', '7', '3', '5'], ['9', '4', '5', '3']]
matrix4 = [['7', '8'], ['4', '6'], ['2', '3']]
但是我想将长列表提供给程序,它会创建列表并在其中附加相关元素。就像 matrix1 列表中的矩阵 1 元素一样。
编辑:我不能使用任何高级内置功能。我只能在代码中使用简单的(如追加、弹出、反向、范围)和我的函数。
解决方案
您可以使用itertools.groupby
:
from itertools import groupby
matrixlist = [['Matrix', '1'], ['1', '4', '6'], ['5', '2', '9'], ['Matrix', '2'], ['2', '6'], ['1', '3'], ['8', '6'], ['Matrix', '3'], ['5', '6', '7', '9'], ['1', '4', '2', '3'], ['8', '7', '3', '5'], ['9', '4', '5', '3'], ['Matrix', '4'], ['7', '8'], ['4', '6'], ['2', '3']]
result = [list(b) for a, b in groupby(matrixlist, key=lambda x:x[0] == 'Matrix') if not a]
输出:
[[['1', '4', '6'], ['5', '2', '9']],
[['2', '6'], ['1', '3'], ['8', '6']],
[['5', '6', '7', '9'], ['1', '4', '2', '3'], ['8', '7', '3', '5'], ['9', '4', '5', '3']],
[['7', '8'], ['4', '6'], ['2', '3']]]
推荐阅读
- python - 在单独的线程中,我的模型的预测功能出现问题
- reactjs - React中如何根据其后代的className更改组件的className?
- sql-server - 无法通过 VB.net 连接到 SQL Server,但我可以使用相同的凭据从 SSMS 登录到服务器
- java - 我很难理解“接口”函数在 Java 中的用途?
- javascript - 如何通过结帐在我的控制器上获得条带令牌?
- php - 按字段分组时如何计算数据库出现次数
- openrefine - 如何合并两个数据集?
- python - AWS Glue 和更新重复数据
- java - 带有错误消息的函数:error / null 或 null。不明白为什么
- java - @EnableWebMvc “禁用” Jackson2ObjectMapperBuilderCustomizer 如何修复?