首页 > 解决方案 > 如何在对不同子列表长度的列表进行排序时修复 IndexError

问题描述

我有以下列表:

expected_ans = [[3], [1],[2],[1,2,3],[1,3],[2,3], [1,2] ,[]]

我试图以这种方式按子列表中的第一个元素对其元素进行排序:

sorted(expected_ans, key=lambda x:x[-1])

我收到以下错误:

  Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
  IndexError: list index out of range

我不确定我错过了什么?提前感谢您的建议。

标签: python-3.xlistsorting

解决方案


没有索引适用于空列表,您的示例列表中的最后一个子列表就是该列表。

您可以改为按每个子列表的单个项目切片进行排序,如果子列表为空,则将返回一个空列表作为键并将其放在返回列表的前面:

sorted(expected_ans, key=lambda x: x[-1:])

这将返回:

[[], [1], [2], [1, 2], [3], [1, 2, 3], [1, 3], [2, 3]]

推荐阅读