Проблема с сортировкой множественного списка

Пытаюсь отсортировать ряд во множественном списке , а на выходе получаю None . Подскажите пожалуйста в чем проблема .

ink = [
    [5, 8, 1, 7, 9, 2],
    [5, 4, 1, 8, 9, 2],
    [5, 8, 6, 3, 0, 2],
]
print(ink[1].sort())

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

Автор решения: Alexey Trukhanov

Метод .sort() сортирует список inplace, то есть он ничего не возвращает (если быть точным - возвращает None), а отсортированный список занимает место старого. Чтобы посмотреть результат, надо так:

ink = [
    [5, 8, 1, 7, 9, 2],
    [5, 4, 1, 8, 9, 2],
    [5, 8, 6, 3, 0, 2],
]
ink[1].sort()
print(ink[1])

или так:

ink = [
    [5, 8, 1, 7, 9, 2],
    [5, 4, 1, 8, 9, 2],
    [5, 8, 6, 3, 0, 2],
]
print(sorted(ink[1]))

но в последнем случае, отсортированный список нигде не будет сохранен.

UPD

Я добавлю ответ на вопрос из комментария - что делать если сортировать надо не строки, а столбцы. На мой взгляд, самый простой способ это использовать numpy, так как базовый питон воспринимает исходный объект как список списков, а numpy - как двумерный массив, у которого есть и строки и столбцы.

import numpy as np

ink = [
    [5, 8, 1, 7, 9, 2],
    [5, 4, 1, 8, 9, 2],
    [5, 8, 6, 3, 0, 2],
]
# конвертируем список списков в массив numpy
ink_np = np.array(ink)

# сортируем какой-то столбец (например, по индексу 1)
ink_np[:, 1].sort()

# если есть необходимость, конвертируем обратно в список списков
ink = ink_np.tolist()
print(ink)
→ Ссылка
Автор решения: MarianD

Метод .sort() работает прямо с оригинальным списком, изменяя его на месте.

В Питоне принято, что такие методы возвращают None, что вы и получили.

Вы можете или

  • сначала сортировать, затем выводить (измененный) оригинальный список:

     ink[1].sort()
     print(ink[1])
    

или

  • применить функцию sorted() с вашим списком между скобками:

     print(sorted(ink[1]))
    

    т.к. функция sorted() возвращает новый, упорядоченный список, не меняя оригинальный.

→ Ссылка