【问题标题】:Rearrange sublists within a list in Python在 Python 中重新排列列表中的子列表
【发布时间】:2023-02-24 13:46:05
【问题描述】:

我有一个包含许多子列表的列表A。我想根据每个子列表的第一个元素重新组织此列表,即按升序排列。我展示了当前和预期的输出。

A=[[27, 31, 32, 36], [30, 34, 35, 39], [28, 32, 33, 37], [29, 33, 34, 38]]
C=[]


for i in range(0,len(A)):
    B=A[i][0]
    C.append(B)
    C.sort()
    print(C)

当前输出是

[27, 28, 29, 30]

预期的输出是

[[27, 31, 32, 36], [28, 32, 33, 37], , [29, 33, 34, 38], [30, 34, 35, 39]]

【问题讨论】:

  • C = sorted(A)
  • 试试A.sort(key=lambda x: x[0])
  • 虽然不是。输出是[27],然后是[27, 30],等等。这是有道理的,因为你将A[i][0]添加到BA[i] 是 A 中的第 i 个列表(如 [27, 31, 32, 36] 对应 i == 0),对于 [0],您只添加第一个元素。

标签: python list


【解决方案1】:

所以你只需要使用 sorted 加上 lambda 函数作为键:

C = sorted(A, key=lambda x: x[0], reverse=False)

【讨论】:

    【解决方案2】:

    您可以使用 key 函数的 sorted 参数和 lambda 关键字来创建返回列表第一个元素的匿名函数。

    >>> A=[[27, 31, 32, 36], [30, 34, 35, 39], [28, 32, 33, 37], [29, 33, 34, 38]]
    >>> sorted(A, key = lambda iterable: iterable[0])
        [[27, 31, 32, 36], [28, 32, 33, 37], [29, 33, 34, 38], [30, 34, 35, 39]]
    

    对于仅按第一个元素排序,sorted 默认执行此操作,因此只需 sorted(A) 即可。上面介绍的方法适用于所有指数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-28
      相关资源
      最近更新 更多