Список Python — это последовательность значений любого типа: строки, числа, числа с плавающей точкой или даже смешанного типа. В этом материале речь пойдет о функциях списков, о том, как создавать их, добавлять элементы, представлять в обратном порядке и многих других.
Создать списки Python
Для создания списка Python нужно заключить элементы в квадратные скобки:
my_list = [1, 2, 3, 4, 5]
Список может выглядеть так:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
Можно смешивать типы содержимого:
my_list = ['один', 10, 2.25, [5, 15], 'пять']
Поддерживаются вложенные списки как в примере выше.
Получать доступ к любому элементу списка можно через его индекс. В Python используется система индексации, начиная с нуля.
third_elem = my_list[2]
Принцип похож на строки.
Изменение списка
Списки — это изменяемые объекты, поэтому их элементы могут изменяться, или же может меняться их порядок.
Если есть такой список:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
То его третий элемент можно изменить следующим образом:
my_list[2] = 'ноль'
Если сейчас вывести его на экран, то он будет выглядеть вот так:
['один', 'два', 'ноль', 'четыре', 'пять']
Если индекс — отрицательное число, то он будет считаться с последнего элемента.
my_list = ['один', 'два', 'три', 'четыре', 'пять']
elem = my_list[-1]
print(elem)
Вывод этого кода — ‘пять’.
Проход (итерация) по списку
Читать элементы списка можно с помощью следующего цикла:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
for elem in my_list:
print(elem)
Таким образом можно читать элементы списка. А вот что касается их обновления:
my_list = [1, 2, 3, 4, 5]
for i in range(len(my_list)):
my_list[i]+=5
print(my_list)
Результат будет следующим:
[6, 7, 8, 9, 10]
Функция len()
используется для возврата количества элементов, а range()
— списка индексов.
Стоит запомнить, что вложенный список — это всегда один элемент вне зависимости от количества его элементов.
my_list = ['один', 10, 2.25, [5, 15], 'пять']
print(len(my_list))
Результат кода выше — 5
.
Срез списка
Можно получить срез списка с помощью оператора (:
):
my_list = ['один', 'два', 'три', 'четыре', 'пять']
print(my_list[1:3])
Результат кода выше — ['два', 'три']
Если убрать первое число, от срез будет начинаться с первого элемента, а если второе — с последнего.
Если убрать числа и оставить только двоеточие, то скопируется весь список.
my_list = ['один', 'два', 'три', 'четыре', 'пять']
print(my_list[1:3])
print(my_list[1:])
print(my_list[:3])
print(my_list[:])
Результат этого года:
['два', 'три']
['два', 'три', 'четыре', 'пять']
['один', 'два', 'три']
['один', 'два', 'три', 'четыре', 'пять']
Поскольку списки изменяемые, менять элементы можно с помощью оператора среза:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
my_list[1:3] = ['Привет', 'Мир']
print(my_list)
Результат:
['один', 'Привет', 'Мир', 'четыре', 'пять']
Вставить в список
Метод insert
можно использовать, чтобы вставить элемент в список:
my_list = [1, 2, 3, 4, 5]
my_list.insert(1,'Привет')
print(my_list)
Результат:
[1, 'Привет', 2, 3, 4, 5]
Индексы для вставляемых элементов также начинаются с нуля.
Добавить в список
Метод append
можно использовать для добавления элемента в список:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
my_list.append('ещё один')
print(my_list)
Результат:
['один', 'два', 'три', 'четыре', 'пять', 'ещё один']
Можно добавить и больше одного элемента таким способом:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
list_2 = ['шесть', 'семь']
my_list.extend(list_2)
print(my_list)
Результат:
['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь']
При этом list_2
не поменяется.
Отсортировать список
Для сортировки списка нужно использовать метод sort
.
my_list = ['cde', 'fgh', 'abc', 'klm', 'opq']
list_2 = [3, 5, 2, 4, 1]
my_list.sort()
list_2.sort()
print(my_list)
print(list_2)
Вывод:
['abc', 'cde', 'fgh', 'klm', 'opq']
[1, 2, 3, 4, 5]
Перевернуть список
Можно развернуть порядок элементов в списке с помощью метода reverse
:
my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list)
Результат:
[5, 4, 3, 2, 1]
Индекс элемента
Метод index
можно использовать для получения индекса элемента:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
print(my_list.index('два'))
Результат 1
.
Если в списке больше одного такого же элемента, функция вернет индекс первого.
Удалить элемент
Удалить элемент можно, написав его индекс в методе pop
:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
removed = my_list.pop(2)
print(my_list)
print(removed)
Результат:
['один', 'два', 'четыре', 'пять']
три
Если не указывать индекс, то функция удалит последний элемент.
my_list = ['один', 'два', 'три', 'четыре', 'пять']
removed = my_list.pop()
print(my_list)
print(removed)
Результат:
['один', 'два', 'три', 'четыре']
пять
Элемент можно удалить с помощью метода remove
.
my_list = ['один', 'два', 'три', 'четыре', 'пять']
my_list.remove('два')
print(my_list)
Результат:
['один', 'три', 'четыре', 'пять']
Оператор del
можно использовать для тех же целей:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
del my_list[2]
print(my_list)
Результат:
['один', 'два', 'четыре', 'пять']
Можно удалить несколько элементов с помощью оператора среза:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
del my_list[1:3]
print(my_list)
Результат:
['один', 'четыре', 'пять']
Функции агрегации
В Python есть некоторые агрегатные функции:
my_list = [5, 3, 2, 4, 1]
print(len(my_list))
print(min(my_list))
print(max(my_list))
print(sum(my_list))
sum()
работает только с числовыми значениями.
А max()
, len()
и другие можно использовать и со строками.
Сравнить списки
В Python 2 сравнить элементы двух списком можно с помощью функции cmp
:
my_list = ['один', 'два', 'три', 'четыре', 'пять']
list_2 = ['три', 'один', 'пять', 'два', 'четыре']
print(cmp(my_list,list_2))
Она вернет -1
, если списки не совпадают, и 1
в противном случае.
В Python 3 для этого используется оператор (==
):
my_list = ['один', 'два', 'три', 'четыре', 'пять']
list_2 = ['три', 'один', 'пять', 'два', 'четыре']
if (my_list == list_2):
print('cовпадают')
else:
print('не совпадают')
Результат не совпадают
.
Математические операции на списках:
Для объединения списков можно использовать оператор (+
):
list_1 = [1, 2, 3]
list_2 = [4, 5, 6]
print(list_1 + list_2)
Результат:
[1, 2, 3, 4, 5, 6]
Список можно повторить с помощью оператора умножения:
list_1 = [1, 2, 3]
print(list_1 * 2)
Результат:
[1, 2, 3, 1, 2, 3]
Списки и строки
Для конвертации строки в набор символов, можно использовать функцию list
:
my_str = 'Monty Python'
my_list = list(my_str)
print(my_list)
Результат:
['M', 'o', 'n', 't', 'y', ' ', 'P', 'y', 't', 'h', 'o', 'n']
Функция list
используется для того, чтобы разбивать строку на отдельные символы.
Можно использовать метод split
для разбития строки на слова:
my_str = 'Monty Python'
my_list = my_str.split()
print(my_list)
Результат:
['Monty', 'Python']
Она возвращает обычный список, где с каждым словом можно взаимодействовать через индекс.
Символом разбития может служить любой знак, а не только пробел.
my_str = 'Monty-Python'
my_list = my_str.split('-')
print(my_list)
Результат будет аналогичен:
['Monty', 'Python']
Объединить список в строку
Обратный процесс — объединение элементов списка в строку.
Это делается с помощью метода join
:
my_list = ['Monty', 'Python']
delimiter = ' '
output = delimiter.join(my_list)
print(output)
Результат Monty Python
.
Алиасинг (псевдонимы)
Когда две переменные ссылаются на один и тот же объект:
my_list = ['Monty', 'Python']
list_2 = my_list
Алиасинг значит, что на объект ссылается больше одного имени.
Следующий пример показывает, как меняются изменяемые списки:
my_list = ['Monty', 'Python']
list_2 = my_list
list_2[1] = 'Java:)'
print(my_list)
Результат:
['Monty', 'Java:)']
Изменился список list_2
, но поскольку он ссылается на один и тот же объект, то оригинальный список тоже поменялся.
Использовать “псевдонимы” при работе со списками не рекомендуется.
В целом, работать со списками в Python очень просто.