Вывод элементов подсписков в обратном порядке

Задание вывести вложенный список наоборот (каждый вложенный список в списке вывести наоборот). Почему у меня на выводе вместо первого вложенного списка выдает None? Что я сделал не так? Или я вообще сделал задание не правильно изначально?

Вывод:

[None, [102, 7, 9], [105, 106, 102], [103, 98, 99, 100], [3, 2, 1]]

Код:

list1 = [[1, 7, 8], [9, 7, 102], [102, 106, 105], [100, 99, 98, 103], [1, 2, 3]]

for j in list1:
    list1[0] = j.reverse()



print(list1)

Ответы (3 шт):

Автор решения: Xander

Ошибка в этой строчке:

list1[0] = j.reverse()

метод reverse не возвращает никакого результата, он просто переворачивает сам список j.

Поэтому нет смысла куда-то присваивать j.reverse() - это всегда будет None

Вместо этого надо писать так:

list1[0] = list(reversed(j))

При этом в вашем коде есть и другие ошибки.

Например, вы каждый раз новый перевёрнутый список записываете вместо одного и того же первого элемента.

→ Ссылка
Автор решения: Павел

Дело в том, что функция reverse() - не возвращает новый список, она изменяет исходный.

Это значит, что в результате работы функции ее значение всегда будет None.

Что можно сделать?

Можно просто не присваивать элементам вашего списка значения, а обойтись без этого:

list1 = [[1, 7, 8], [9, 7, 102], [102, 106, 105], [100, 99, 98, 103], [1, 2, 3]]

for j in list1:
    j.reverse()

print(list1)

Вывод

[[8, 7, 1], [102, 7, 9], [105, 106, 102], [103, 98, 99, 100], [3, 2, 1]]

Дополнительно

Суть вашего кода - применение к каждому элементу списка функции reverse(), для таких целей можно воспользоваться встроенной функцией map(), вот документация на нее:

list1 = [[1, 7, 8], [9, 7, 102], [102, 106, 105], [100, 99, 98, 103], [1, 2, 3]]

list(map(list.reverse, list1))

print(list1)

Вывод

[[8, 7, 1], [102, 7, 9], [105, 106, 102], [103, 98, 99, 100], [3, 2, 1]]
→ Ссылка
Автор решения: Алексей Р

Можно сделать через срезы и списковое включение:

list1 = [x[::-1] for x in list1]
→ Ссылка