Как исправить IndexError при сортировке списка списков различной длины подсписка - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть следующий список:

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

Я не уверен, что мне не хватает? Заранее спасибо за предложения.

Ответы [ 2 ]

2 голосов
/ 11 апреля 2020

Ни один индекс не будет работать с пустым списком, который является последним подсписком в вашем списке образцов.

Вместо этого вы можете сортировать по срезу из одного элемента каждого подсписка, который в случай пустого подсписка, вернул бы пустой список в качестве ключа и поместил бы его перед возвращаемым списком:

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

Это возвращает:

[[], [1], [2], [1, 2], [3], [1, 2, 3], [1, 3], [2, 3]]
1 голос
/ 11 апреля 2020

Во-первых, вы сортируете по последнему элементу в каждом списке

Во-вторых, причина, по которой вы видите ошибку индекса, заключается в том, что последний список пуст. [] [- 1] вызовет IndexError, потому что в позиции -1 нет элемента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...