Список — это упорядоченный набор значений с элементами разного типа.
Списки в Python — это удобный способ хранить набор элементов и управлять им. В списках можно добавлять, удалять или изменять значения.
В статье рассмотрим, как создать, изменить и получить доступ к элементам.
Что такое список (list) в Python
Список в Python — универсальный организованный набор данных, в котором хранятся объекты разных типов. Например, числа, строки, другие списки и даже объекты. У каждого элемента есть свой уникальный номер, или индекс, по которому его легко можно найти. Нумерация элементов начинается с 0, а не с 1. А еще, в отличие от массивов, где всё должно быть одного размера, в Python ограничений по размеру нет.
Как списки хранятся в памяти
Список в Python хранит не сами значения, а только ссылки на объекты. Это значит, что список состоит из адресов, которые указывают на место, где хранятся сами элементы. Например, когда создаете список, Python выделяет место в памяти для ссылок на объекты.
data = [10, "привет", [1, 2, 3]]
Как это выглядит:
- data[0] — ссылка на число 10;
- data[1] — ссылка на строку «привет»;
- data[2] — ссылка на другой список [1, 2, 3].
Все элементы в списке расположены в том порядке, в котором их добавляли.
А если нужно что-то изменить или добавить в список, просто поменяйте указатели или добавьте новый. Необязательно выделять новую память для всех элементов.
Как решать типовые задачи
Вот некоторые базовые функции списка Python:
- Объявить список.
Синтаксическая конструкция для списка Python:
mylst = [1, 2, 3, 4, 5]
Mylst — это название переменной, а в скобках указаны элементы.В Python есть функцияlist().
Эта функция создает пустой список или преобразовывает другой объект в список. Чтобы создать пустой перечень, просто напишите:
mylst = list()
- Обратиться к элементу.
Списки — это наборы элементов. Чтобы получить доступ к элементу в списке, нужно указать индекс — порядковый номер объекта. Например, в списках у первого элемента индекс 0, у второго — 1, у третьего — 2.
Обратитесь к пятому элементу списка:
mylst = [1, 2, 3, 4, 5]
print(mylst[4])
5
Можно использовать отрицательные индексы, чтобы считать с конца:
mylst = [1, 2, 3, 4, 5]
print(mylst[-3])
- Добавить элемент.
Со встроенной функциейappend()
можно добавить элемент в конец списка:
mylst = [1, 2, 3, 4, 5]
mylst.append(6)
print(mylst)
[1, 2, 3, 4, 5, 6]
- Если нужно добавить элемент в определенное место, используйте метод
insert()
:
mylst = [1, 2, 3, 4, 5]
mylst.insert(1, 25)
print(mylst)
[1, 25, 2, 3, 4, 5]
Если добавить элемент этим методом, остальные элементы сдвинутся вправо. - Изменить элемент.
Для этого установите новое значение индекса:
mylst = [1, 2, 3, 4, 5]
mylst[1] = None
print(mylst)
[1, None, 3, 4, 5]
В Python элементы не должны обязательно быть одного типа. - Удалить элемент.
Чтобы удалить элемент по индексу, используйте функциюdel()
:
mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
del mylst[2]
print(mylst)
[1, 2, 4, 5, 4, 3, 2, 1]
А по значению —remove()
:
mylst = [1, 2, 3, 4, 5, 4, 3, 2, 1]
mylst.remove(2)
print(mylst)
[1, 3, 4, 5, 4, 3, 2, 1]
- Проверить на вхождение.
Чтобы проверить, есть ли определенный элемент в списке, используйте ключевое слово in:
mylst = [1, 2, 3, 4, 5]
print(None in mylst)
False
print(3 in mylst)
True
- Объединить списки.
Вызовите методextend()
:
mylst = [1, 2]
mylst1 = [3, 4]
mylst2 = [5]
mylst.extend(mylst1)
print(mylst)
[1, 2, 3, 4]
mylst.extend(mylst2)
print(mylst)
[1, 2, 3, 4, 5]
Или оператор сложения с присваиванием:
mylst = [1, 2]
mylst1 = [3, 4]
mylst2 = [5]
mylst += mylst1
print(mylst)
[1, 2, 3, 4]
mylst += mylst2
print(mylst)
[1, 2, 3, 4, 5]
- Копировать список.
Воспользуйтесь методом списковcopy()
:
mylst = [1, 2, 3, 4, 5]
mylst_copy = mylst.copy()
print(mylst)
[1, 2, 3, 4, 5]
print(mylst_copy)
[1, 2, 3, 4, 5]
Или создайте полный срез:
mylst = [1, 2, 3, 4, 5]
mylst_copy = mylst[::]
print(mylst)
[1, 2, 3, 4, 5]
print(mylst_copy)
[1, 2, 3, 4, 5]
- Выполнить итерацию по списку.
Воспользуйтесь конструкциейfor
:
mylst = [1, 2, 3, 4, 5]
for item in mylst:
print(item)
1
2
3
4
5
Или повторите список с помощью циклаwhile
:
mylst = [1, 2, 3, 4, 5]
i = 0
while True:
try:
print(mylst[i])
except IndexError:
print("Done!")
break
i += 1
1
2
3
4
5
Done!
Пройдите курс «Python-разработчик» в Skypro. Начнете с основ, а потом перейдете к практике. Научитесь работать с переменными, циклами, функциями, условными конструкциями и основными типами данных. А еще — делать HTTP-запросы, работать с API и внешними сервисами, разрабатывать веб-приложения с Django и DRF, понимать и использовать принципы ООП: инкапсуляцию, наследование, полиморфизм. Не страшно, если у вас нет опыта в IT. Вам будет помогать команда опытных преподавателей, наставников и кураторов.
Методы списка python
Эти методы помогают находить, считывать и модифицировать данные, которые хранятся в списках:
-
index()
Ищет заданное значение в списке слева направо. Возвращает индекс первого найденного элемента в списке. Если не нашел данные — выдает ошибку:
ValueError.
Пример:
fruits = ["яблоко", "банан", "груша", "банан"]
print(fruits.index("банан")) # 1
Метод вернет индекс первого «банана» — то есть1
.
Если элемента нет, будет ошибка.
-
count()
Проходит по всему списку и подсчитывает, сколько раз встречается такое значение. Возвращает число.
Пример:
fruits = ["яблоко", "банан", "груша", "банан"]
print(fruits.count("банан")) # 2
«Банан» встречается два раза — метод возвращает2
. -
clear()
Полностью удаляет все элементы из списка, делает его пустым.
Пример:
fruits = ["яблоко", "банан", "груша"]
fruits.clear()
print(fruits) # []
Послеclear()
список пустой:[]
. -
sort()
Меняет порядок элементов в списке, сортирует по возрастанию. Числа — от меньшего к большему. Строки — по алфавиту. Меняет сам список, не создает копию. Возвращает
None
.
Пример числа:
numbers = [5, 1, 3, 2]
numbers.sort()
print(numbers) # [1, 2, 3, 5]
Пример строки:
fruits = ["груша", "яблоко", "банан"]
fruits.sort()
print(fruits) # ['банан', 'груша', 'яблоко']
Сортирует внутри списка, возвращаетNone
. Если нужно сохранить исходный список, лучше использоватьsorted()
. Но это уже отдельная функция, не метод. -
reverse()
Меняет порядок всех элементов в списке на обратный. Например: есть список, который идет от старых событий к новым, а нужно показать наоборот.
Пример:
numbers = [1, 2, 3, 4]
numbers.reverse()
print(numbers) # [4, 3, 2, 1]
Элементы просто меняются местами, последний становится первым. -
pop()
Удаляет и возвращает элемент из списка по индексу. Если индекса нет, удаляется последний элемент.
Пример без индекса:
fruits = ["яблоко", "банан", "груша"]
last = fruits.pop()
print(last) # "груша"
print(fruits) # ["яблоко", "банан"]
Пример с индексом:
fruits = ["яблоко", "банан", "груша"]
last = fruits.pop(0)
print(last) # "яблоко"
print(fruits) # ["банан", "банан"]
Методpop()
не просто удаляет, но и возвращает значение, которое можно сохранить.
Если забыли, что делает метод, напишитеhelp(list.method)
прямо в Python. Или используйте автоподсказку в редакторе кода.
Встроенные функции списков Python
Вот основные функции, которые помогут работать со списками и выполнять разные операции:
- Получить длину любого списка.
Функцияlen()
считает количество элементов в списке и возвращает это число. Можно легко узнать длину списка — например, сколько фруктов, имен или чисел в списке. Функцияlen()
работает со списками, строками, словарями и кортежами.
Пример:
fruits = ["яблоко", "банан", "груша"]
print(len(fruits)) # 3
- Вернуть элемент с максимальным значением.
Функцияmax()
ищет и возвращает самое большое значение в списке. Например, в списке чисел вернет наибольшее число, а в списке строк — слово, которое идет последним по алфавиту.
Пример с числом:
numbers = [3, 8, 1, 5]
print(max(numbers)) # 8
Пример со строкой:
names = ["Катя", "Аня", "Вика"]
print(max(names)) # "Катя" (по алфавиту)
Все элементы должны быть сравнимы между собой. Нельзя мешать строки и числа. - Вернуть элемент с минимальным значением.
- Функция
min()
ищет и возвращает самое маленькое значение в списке. В числах — наименьшее число. В строках — слово, которое идет первым по алфавиту.
Пример с числом:
numbers = [3, 8, 1, 5]
print(min(numbers)) # 1
Пример со строкой:
names = ["Катя", "Аня", "Вика"]
print(max(names)) # "Аня"
- Привести к типу.
Функцияlist()
преобразует другие типы данных в список. Например: строку, кортеж, множество.
Пример из строки:
text = "hello"
letters = list(text)
print(letters) # ['h', 'e', 'l', 'l', 'o']
Пример из кортежа:
numbers = (1, 2, 3)
print(list(numbers)) # [1, 2, 3]
Пример из множества:
items = {"яблоко", "банан", "груша"}
print(list(items)) # ['банан', 'груша', 'яблоко'] (порядок может быть разным)
После преобразования получается настоящий список, с которым можно делать всё что угодно.
Работа со срезами
Срезы — это способ получить новый список из части старого. Можно взять весь список целиком, только некоторые элементы или, например, каждый второй элемент. Для этого задают шаги: указывают, с какого по какой индекс взять.
mylst = [1, 2, 3, 4, 5]
mylst_slice_0 = mylst[::] # полная копия
print(mylst_slice_0)
[1, 2, 3, 4, 5]
mylst_slice_1 = mylst[0:2] # крайний индекс (не включается в срез)
print(mylst_slice_1)
[1, 2]
mylst_slice_2 = mylst[::2] # указание шага
print(mylst_slice_2)
[1, 3, 5]
Синтаксис работы со срезами:
# имя переменной[стартовый индекс:конечный индекс:шаг]
variable_name[start_index:end_index:step]
Срезы часто используют аналитики данных. Это автоматизирует и ускоряет решение некоторых задач. Получить нужные навыки можно в онлайн-университете Skypro на курсе «Аналитик данных». За 12 месяцев изучите базу, которая пригодится в будущей профессии. Опытные преподаватели объяснят всё простыми словами, и у вас будет возможность сразу начать практиковаться на проектах от реальных работодателей. Занятия проходят онлайн — удобно совмещать с работой и личной жизнью. В общем чате сможете задать вопросы своим сокурсникам, кураторам или преподавателям.
Генератор списков
С этой конструкцией можно легко создавать списки:
mylst = [_ for _ in range(6)]
print(mylst)
[0, 1, 2, 3, 4, 5]
Или указать условия для генерации элементов:
mylst = [x if x % 2 == 0 else "odd" for x in range(20)]
print(mylst)
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd', 10, 'odd', 12, 'odd', 14, 'odd', 16, 'odd', 18, 'odd']
Главное о списках в Python
- Списки — это набор элементов разных типов: числа, строки и другие.
- В памяти списки хранятся не как элементы, а в виде ссылок на объекты.
- Списки создаются несколькими способами: с помощью функции list(), генераторов списков и срезов.
- Основные методы: insert() — добавляет элементы в указанное место в списке, remove() — удаляет указанный элемент из списка, extend() — объединяет два списка, добавляет элементы одного списка в конец другого, copy() — создает копию списка, index() — находит индекс первого вхождения элемента, sort() — сортирует элементы списка.
- В Python есть инструменты, которые помогают управлять списками: del() — удаляет элемент по индексу или сам список, list() — преобразует другие последовательности в список, len() — возвращает длину списка, max() — находит максимальный элемент в списке, min() — находит минимальный элемент в списке.
Добавить комментарий