【问题标题】:How to create new lists in python如何在python中创建新列表
【发布时间】:2019-10-20 14:27:17
【问题描述】:

我想从一个列表创建新列表。这是我正在处理的示例列表:

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 元素。

编辑:我不能使用任何高级内置功能。我只能在代码中使用简单的(如追加、弹出、反向、范围)和我的函数。

【问题讨论】:

  • for 循环方法有什么问题?你会拥有多个矩阵还是总是有 4 个?
  • 可能不止 4 个。我编辑了这个问题,也许现在很清楚了。
  • 如果您可以更改输入列表的结构,我强烈建议您使用二维矩阵数组而不是当前结构。对于二维数组,您的第一个矩阵将是 matrixList[0],第二个矩阵将是 matrixList[1],依此类推。

标签: python python-3.x list function


【解决方案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']]]

【讨论】:

  • 谢谢,但我不能使用它。我希望它们在不同的列表中使用它们。
【解决方案2】:

你可以使用下面的列表理解来做到这一点

indx = [i  for i, mat in enumerate(matrixlist )if mat[0]=='Matrix']

matrixes = {matrixlist[i][1]: matrixlist[i+1: j] for i, j in zip(indx, indx[1:])}

# access matrix with its id
matrixes["1"]

【讨论】:

  • 谢谢,对我有用。
猜你喜欢
  • 2022-11-05
  • 2011-06-10
  • 2023-02-04
  • 2019-01-13
  • 1970-01-01
  • 2011-01-11
  • 2022-01-16
  • 2019-11-12
  • 2022-01-22
相关资源
最近更新 更多