【问题标题】:Split a list every time the first element of a child list changes每次子列表的第一个元素更改时拆分列表
【发布时间】:2021-09-12 16:54:05
【问题描述】:

我有一个看起来像这样的列表

[[6, 4, 163, 42],
 [6, 44, 163, 79],
 [6, 80, 163, 118],
 [6, 119, 163, 156],
 [6, 158, 163, 187],
 [6, 192, 163, 225],
 [6, 231, 163, 265],
 [169, 4, 260, 42],
 [169, 44, 260, 79],
 [169, 80, 260, 118],
 [169, 119, 260, 156],
 [169, 158, 260, 187],
 [169, 192, 260, 225],
 [169, 231, 260, 265],
 [273, 4, 385, 42],
 [273, 44, 385, 79],
 [273, 80, 385, 118],
 [273, 119, 385, 156],
 [273, 158, 385, 187],
 [273, 192, 385, 225],
 [273, 231, 385, 265]

每次子列表的第一个元素发生变化时,我都会尝试拆分列表

我正在努力让列表变成这样

[[[6, 4, 163, 42],
 [6, 44, 163, 79],
 [6, 80, 163, 118],
 [6, 119, 163, 156],
 [6, 158, 163, 187],
 [6, 192, 163, 225],
 [6, 231, 163, 265]],
 [[169, 4, 260, 42],
 [169, 44, 260, 79],
 [169, 80, 260, 118],
 [169, 119, 260, 156],
 [169, 158, 260, 187],
 [169, 192, 260, 225],
 [169, 231, 260, 265]],
 [[273, 4, 385, 42],
 [273, 44, 385, 79],
 [273, 80, 385, 118],
 [273, 119, 385, 156],
 [273, 158, 385, 187],
 [273, 192, 385, 225],
 [273, 231, 385, 265]]]

我不知道该怎么做

【问题讨论】:

  • 你写了什么代码?
  • 提示: 尝试使用 6167273 键设置 dict,换句话说,每个子列表的元素 0。

标签: python list loops iteration


【解决方案1】:

这样的事情怎么样:

print([[i for i in lst if i[0] == k] for k in list(set([j[0] for j in lst]))])

其中“lst”是您的原始列表的名称

【讨论】:

  • oneliners 很紧
  • 如果首选单行(在大多数情况下认为不可读),让我们选择一些好的变量名: ``print([[sublist for sublist in lst if sublist[0] == key] for key in list(set([sub[0] for sub in lst]))])
猜你喜欢
  • 2012-05-21
  • 1970-01-01
  • 2021-11-09
  • 2015-01-12
  • 1970-01-01
  • 2020-12-29
  • 2021-04-21
  • 2022-11-28
  • 1970-01-01
相关资源
最近更新 更多