Список необходим для хранения в них коллекции объектов. В отличии от массивов из других языков программирования, список в Python может хранить объекты всех типов в одном. Размер списка доступен и к изменениям.
Также вы можете почитать про классические массивы из модуля array: Массивы (Array) в Python - модуль array
Что такое список (list) в Python?
Список (list) — это тип данных, предназначенный для хранения набора различных элементов.
Как объявлять списки в Python?
Объявление списка — это первый и самый важный шаг в его создании. Есть несколько способов объявить список в Python.
Первый способ:
# Объявляем список
elements = [24, 29, 26, 31, 27, 32]
# Выводим список и узнаем тип данных
print(elements)
print(type(elements))
Результат:
>>> [24, 29, 26, 31, 27, 32]
>>> <class 'list'>
В этом примере мы уже ввели данные в список. Чтобы объявить пустой список, необходимо сделать так:
# Объявляем пустой список
elements = []
# Выводим список и узнаем тип данных
print(elements)
print(type(elements))
Результат:
>>> []
>>> <class 'list'>
Второй способ объявления списка:
# Объявляем пустой список
elements = list()
# Выводим список и узнаем тип данных
print(elements)
print(type(elements))
Результат:
>>> []
>>> <class 'list'>
Обращение к элементам списка:
# Объявляем список
elements = [24, 29, 'python']
# Выводим список с индексом 2
print(elements[2])
Результат:
>>> python
Индекс — это порядковый номер элемента в списке. В примере выше индексы (позиции в списке) будут соответственно: 0, 1, 2.
Существует также отрицательный индекс.
# Объявляем список
elements = [24, 29, 'python']
# Выводим список с индексом -1
print(elements[-1])
Результат:
>>> python
Отрицательный индекс полезен, когда вам нужно получить доступ к последнему элементу в списке без вычисления его номера. Каждый конечный элемент имеет индекс, равный -1.
Добавление в список
Добавление, изменение, удаление элементов доступно в списках. Рассмотрим каждый способ замены элементов на примерах.
Для добавления нового элемента в список используется list.append(x), где list — список, x — желаемое значение.
# Объявляем список
elements = [24, 29, 'python']
# Добавляем новый элемент
elements.append('django')
# Выводим список
print(elements)
Результат
>>> [24, 29, 'python', 'django']
Добавление в список на указанную позицию
Важно обратить внимание на метод list.insert(i,x), где list — список, i — позиция, x — искомое значение.
# Объявляем список
elements = [5, 6, 8]
# Добавляем на позицию 2, после 6
elements.insert(2, 7)
# Выводим список
print(elements)
Результат:
>>> [5, 6, 7, 8]
Изменение элементов в списке
Изменение элементов списка происходит следующим образом: необходимо выбрать элемент по индексу и присвоить новое значение.
# Объявляем список
elements = [5, 6, 8]
# Изменяем по индексу
elements[0] = 1
elements[1] = 2
elements[2] = 3
# Выводим список
print(elements)
Результат:
[1, 2, 3]
Удаление элемента из списка
Для удаления из списка используйте конструкцию del list, где list — список, i — индекс (позиция) элемента в списке:
# Объявляем список
elements = [1, 2, 'Python', 3]
# Удаляем элемент под индексом 2
del elements[2]
# Выводим список
print(elements)
Результат:
[1, 2, 3]
Удаление диапазонами:
# Объявляем список
elements = [1, 2, 'Python', 3, 4, 5, 'Django']
# Удаляем элементы после с 4 индекса (включительно)
del elements[4:]
# Выводим список
print(elements)
Результат:
[1, 2, 'Python', 3]
И наоборот
# Объявляем список
elements = [1, 2, 'Python', 3, 4, 5, 'Django']
# Удаляем в обратную сторону
del elements[:4]
# Выводим список
print(elements)
Результат:
[4, 5, 'Django']
Проверка наличия элемента в списке:
# Объявляем список
elements = ['Django', 'Python', 'PyQT', 'C++', 'VSCODE']
# Проверяем, что значение существует в списке
if 'Python' in elements:
print('Python на месте')
Результат:
>>> Python на месте
Объединение списков
# Объявляем списки
elements = ['Django', 'Python', 'PyQT', 'C++', 'VSCODE']
nums = [1, 2, 3, 4]
# Соединяем списки
print(elements + nums)
Результат:
>>> ['Django', 'Python', 'PyQT', 'C++', 'VSCODE', 1, 2, 3, 4]
Копирование списка Python
Если вы захотите скопировать список оператором =, вы скопируете не сам список, а только его ссылку.
Для копирования списков можно использовать несколько вариантов:
elements.copy()
— встроенный метод copy (доступен с Python 3.3);list(elements)
— через встроенную функциюlist()
;copy.copy(elements)
— функцияcopy()
из пакета copy;elements[:]
— через создание среза (устаревший синтаксис).
С помощью list.copy()
# Объявляем списки
elements = ['Django', 'Python', 'PyQT', 'C++', 'VSCODE']
# Копируем список
copy_elements = elements.copy()
# Проверяем списки
print(elements, id(elements))
print(copy_elements, id(copy_elements))
Результат:
>>> ['Django', 'Python', 'PyQT', 'C++', 'VSCODE'] 1404420205568
>>> ['Django', 'Python', 'PyQT', 'C++', 'VSCODE'] 1404425414912
Списки имеют разные ID, это означает, что мы их правильно скопировали в отдельную ячейку памяти.
С помощью list()
# Объявляем списки
elements = ['Django', 'Python', 'PyQT', 'C++', 'VSCODE']
# Копируем список
copy_elements = list(elements)
# Проверяем списки
print(elements, id(elements))
print(copy_elements, id(copy_elements))
Результат:
>>> ['Django', 'Python', 'PyQT', 'C++', 'VSCODE'] 1431050955776
>>> ['Django', 'Python', 'PyQT', 'C++', 'VSCODE'] 1431056051136
С помощью модуля copy:
Примечание: copy.copy (a) делает поверхностную копию. Объекты внутри списка будут скопированы как ссылки на них (как в случае с оператором =). Если вы хотите рекурсивно скопировать все элементы в списке, используйте copy.deepcopy (a)
import copy
# Объявляем списки
elements = ['Django', 'Python', 'PyQT', 'C++', 'VSCODE']
# Копируем список
copy_elements = copy.deepcopy(elements)
# Проверяем списки
print(elements, id(elements))
print(copy_elements, id(copy_elements))
Результат:
>>> ['Django', 'Python', 'PyQT', 'C++', 'VSCODE'] 1833184669504
>>> ['Django', 'Python', 'PyQT', 'C++', 'VSCODE'] 1833184666624
Вложенные списки:
# Объявляем список с вложенными списками
elements = ['Программирование', ['Python', 'C++'], 'Психология', ['Отношения', 'Уверенность']]
# Получим значение по индексу 0
print(elements[0])
# Получим значение по индексу 1 с вложенным индексом 0
print(elements[1][0])
# Получим значение по индексу 3 с вложенным индексом 1
print(elements[3][1])
Результат:
>>> Программирование
>>> Python
>>> Уверенность
Методы списков
list.append(x)
— позволяет добавлять элемент в конец списка;list1.extend(list2)
— предназначен для сложения списков;list.insert(i, x)
— служит для добавления элемента на указанную позицию(i
— позиция,x
— элемент);list.remove(x)
— удаляет элемент из списка (только первое вхождение);list.clear()
— предназначен для удаления всех элементов (после этой операции список становится пустым []);list.copy()
— служит для копирования списков.list.count(x)
— посчитает количество элементовx
в списке;list.index(x)
— вернет позицию первого найденного элементаx
в списке;list.pop(i)
— удалит элемент из позицииi
;list.reverse()
— меняет порядок элементов в списке на противоположный;list.sort()
— сортирует список.
Цикл по списку:
# Объявляем список
elements = ['Django', 'Python', 'PyQT', 'C++', 'VSCODE']
# Обходим все элементы с помощью цикла for
for elem in elements:
print(elem)
Результат:
>>> Django
>>> Python
>>> PyQT
>>> C++
>>> VSCODE