Списки представляют собой изменяемые последовательности, обычно используемые для хранения коллекций однородных элементов, где степень сходства зависит от приложения.
Списки поддерживают следующие операции:
В Python списки представлены встроенным классом list()
, его можно использовать для преобразования итерируемых объектов в тип list
.
Списки могут быть созданы несколькими способами:
[]
.[a]
, [a, b, c]
.[x for x in iterable]
.list
:list()
- создаст пустой список, list(iterable)
- преобразует, контейнером поддерживающим итерацию в список.Конструктор класса list(iterable)
создает список, элементы которого совпадают и находятся в том же порядке, что и элементы итератора iterable
. Аргумент iterable
может быть либо последовательностью, контейнером поддерживающим итерацию, либо объектом итератора. Если аргумент не задан, конструктор создает новый пустой список []
.
Так же смотрите использование списков list
в Python.
list
:>>> list()
# Создание списка
# []
>>> []
# []
>>> [1, 'a', 10, 'b', '105']
# [1, 'a', 10, 'b', '105']
# Преобразование строки str в список тип list
>>> list('abc')
# ['a',' b',' c']
# Преобразование кортежа tuple в список тип list
>>> list((1, 2, 3))
# [1, 2, 3]
# Преобразование множества set в список тип list
>>> list({1, 2, 3})
# [1, 2, 3]
# Преобразование генератора в список тип list
>>> list(range(5))
# [0, 1, 2, 3, 4]
# Преобразуем список строк в список чисел
x = ['55', '11', '25', '15', '9']
int_list = [int(i) for i in x]
print(int_list)
# [11, 15, 25, 55, 9]
Если объект iterable
уже является списком, создается и возвращается копия, аналогичная iterable[:]
. Многие другие операции также создают списки, в том числе встроенная функция sorted()
.
list.sort(*, key=None, reverse=False)
:Метод сортирует список на месте, используя только оператор <
сравнения между элементами. Исключения при сравнении не подавляются - если какие-либо операции сравнения завершатся неудачей, то вся операция сортировки завершится неудачей и список, скорее всего, останется в частично измененном состоянии.
Метод list.sort()
принимает два аргумента, которые могут передаваться только по ключевому слову:
key
определяет функцию с одним аргументом, которая используется для извлечения ключа сравнения из каждого элемента списка, например, key=str.lower. Ключ, соответствующий каждому элементу в списке, вычисляется один раз и затем используется для всего процесса сортировки. Значение по умолчанию None
означает, что элементы списка сортируются напрямую без вычисления отдельного значения ключа.reverse
это логическое значение. Если установлено значение True
, то элементы списка сортируются так, как если бы каждое сравнение было обратным.Метод изменяет последовательность на месте для экономии памяти при сортировке большой последовательности. Чтобы напомнить пользователям, что он работает с таким эффектом, он не возвращает отсортированную последовательность. Для того, что бы получить копию отсортированного списка используйте встроенную функцию сортировки sorted()
.
Метод list.sort()
гарантированно будет стабильным. Сортировка является стабильной, если она гарантирует отсутствие изменения относительного порядка элементов, которые будут равными в сортируемом списке. Это полезно для сортировки за несколько проходов, например сортировка по отделу, а затем по уровню зарплаты.
sort()
:>>> x = [5, 2, 3, 1, 4]
>>> x.sort()
>>> x
# [1, 2, 3, 4, 5]
# Обратная сортировка - reverse=True
>>> x = [5, 2, 3, 1, 4]
>>> x.sort(reverse=True)
>>> x
# [5, 4, 3, 2, 1]
Сортировка по длине строки, в качестве функции сортировки выступает встроенная len()
:
>>> x = ['a', 'dddd', 'сс', 'bbb']
>>> x.sort(key=len)
>>> x
# ['a', 'сс', 'bbb', 'dddd']
В следующем примере, в списке x
представлена последовательность чисел в качестве строк. При простой сортировке будет использоваться лексикографическое сравнение.
>>> x = ['55', '11', '25', '15', '9']
>>> x.sort()
>>> x
# ['11', '15', '25', '55', '9']
Применим в качестве ключевой функции для сравнения класс int()
, для преобразования строк в целые числа, что бы упорядочить последовательность строк как будто это список чисел.
>>> x = ['55', '11', '25', '15', '9']
>>> x.sort(key=int)
>>> x
# ['9', '11', '15', '25', '55']