Списки (list
) — это изменяемые упорядоченные коллекции элементов произвольных типов.
Аналогичны массивам в других языках, но более гибкие.
1. Создание списка
empty_list = [] # Пустой список
numbers = [1, 2, 3, 4, 5] # Список чисел
mixed = [1, "hello", 3.14, True] # Смешанные типы
nested = [[1, 2], [3, 4]] # Вложенные списки
Генерация списков:
list_from_range = list(range(5)) # [0, 1, 2, 3, 4]
list_from_string = list("abc") # ['a', 'b', 'c']
2. Доступ к элементам
Индексация начинается с 0 (отрицательные индексы — с конца).
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # "apple"
print(fruits[-1]) # "cherry" (последний элемент)
Срезы (slice):
numbers = [0, 1, 2, 3, 4, 5]
print(numbers[1:4]) # [1, 2, 3] (элементы 1, 2, 3)
print(numbers[:3]) # [0, 1, 2] (от начала до 3)
print(numbers[2:]) # [2, 3, 4, 5] (от 2 до конца)
print(numbers[::2]) # [0, 2, 4] (каждый второй)
3. Изменение списков
Добавление элементов:
fruits = ["apple", "banana"]
fruits.append("orange") # ["apple", "banana", "orange"]
fruits.insert(1, "kiwi") # ["apple", "kiwi", "banana", "orange"]
fruits.extend(["pear", "grape"]) # Расширение списка
Удаление элементов:
fruits.remove("banana") # Удаляет первый найденный элемент
popped = fruits.pop(1) # Удаляет и возвращает элемент с индексом 1
del fruits[0] # Удаляет элемент по индексу
fruits.clear() # Очищает список полностью
4. Основные операции
Объединение списков:
list1 = [1, 2]
list2 = [3, 4]
combined = list1 + list2 # [1, 2, 3, 4]
Копирование списка:
original = [1, 2, 3]
shallow_copy = original.copy() # или list(original)
Проверка наличия элемента:
if "apple" in fruits:
print("Есть яблоко!")
5. Методы списков
Метод |
Описание |
append(x) |
Добавляет x в конец |
extend(iterable) |
Добавляет элементы из итерируемого объекта |
insert(i, x) |
Вставляет x на позицию i |
remove(x) |
Удаляет первое вхождение x |
pop([i]) |
Удаляет и возвращает элемент по индексу (по умолчанию последний) |
index(x) |
Возвращает индекс первого вхождения x |
count(x) |
Считает количество вхождений x |
sort() |
Сортирует список (можно с key= ) |
reverse() |
Разворачивает список |
copy() |
Возвращает копию списка |
6. Генераторы списков (List Comprehension)
Создание списков в одну строку:
squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16]
evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
7. Примеры использования
Фильтрация списка:
numbers = [1, 2, 3, 4, 5]
filtered = [x for x in numbers if x > 2] # [3, 4, 5]
Сортировка:
fruits = ["banana", "apple", "cherry"]
fruits.sort() # ["apple", "banana", "cherry"]
fruits.sort(key=lambda x: len(x)) # Сортировка по длине
Обход списка:
for index, value in enumerate(fruits):
print(f"Индекс {index}: {value}")
8. Важные нюансы
-
Списки изменяемы (в отличие от кортежей tuple
).
-
Присваивание list2 = list1
создаёт ссылку, а не копию!
-
Для глубокого копирования используйте copy.deepcopy()
.