Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Зачем нужен список в Python?
Список (list) — это один из фундаментальных типов данных в Python. Это упорядоченная, изменяемая коллекция элементов, которая позволяет хранить и манипулировать множеством значений.
Основное назначение списков
Список используется для:
- Хранения упорядоченной последовательности элементов
- Быстрого доступа к элементам по индексу
- Добавления и удаления элементов
- Итерации (перебора) элементов
- Преобразования и фильтрации данных
Основные операции со списками
# Создание списка
fruits = ['apple', 'banana', 'orange']
numbers = [1, 2, 3, 4, 5]
mixed = [1, 'hello', 3.14, True, None]
empty = []
# Доступ к элементам (индексация с 0)
print(fruits[0]) # apple
print(fruits[-1]) # orange (последний элемент)
# Срезы (slicing)
print(fruits[0:2]) # ['apple', 'banana']
print(fruits[:2]) # ['apple', 'banana']
print(fruits[1:]) # ['banana', 'orange']
# Длина списка
print(len(fruits)) # 3
# Изменение элемента
fruits[0] = 'mango'
print(fruits) # ['mango', 'banana', 'orange']
# Добавление элементов
fruits.append('kiwi')
fruits.extend(['grape', 'melon'])
fruits.insert(1, 'pear') # вставить на позицию 1
# Удаление элементов
fruits.remove('banana') # удалить по значению
removedItem = fruits.pop() # удалить последний и вернуть
fruits.pop(0) # удалить по индексу
del fruits[0] # еще один способ удаления
# Проверка наличия элемента
if 'apple' in fruits:
print("Яблоко в списке")
# Поиск индекса
index = fruits.index('mango')
print(index) # позиция элемента
# Сортировка
fruits.sort() # сортирует на месте
sorted_fruits = sorted(fruits) # возвращает новый список
# Разворот
fruits.reverse()
reversed_fruits = fruits[::-1] # еще один способ
Итерация по спискам
# Базовый цикл
for fruit in fruits:
print(fruit)
# С индексом
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
# List comprehension (самый Pythonic способ)
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# С условием
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # [0, 4, 16, 36, 64]
# Вложенный comprehension
matrix = [[i*j for j in range(3)] for i in range(3)]
print(matrix) # [[0, 0, 0], [0, 1, 2], [0, 2, 4]]
Практические примеры использования
# Пример 1: Обработка результатов
test_scores = [85, 92, 78, 95, 88]
average = sum(test_scores) / len(test_scores)
passed = [score for score in test_scores if score >= 80]
print(f"Средний балл: {average}")
print(f"Прошли: {passed}")
# Пример 2: Сбор данных
user_input = []
while True:
value = input("Введите число (или 'выход'): ")
if value.lower() == 'выход':
break
user_input.append(int(value))
print(f"Вы ввели: {user_input}")
# Пример 3: Преобразование данных
prices = [10.5, 20.0, 15.75, 30.25]
rounded_prices = [round(p) for p in prices]
increased_prices = [p * 1.1 for p in prices]
print(f"Округленные: {rounded_prices}")
print(f"С наценкой 10%: {increased_prices}")
# Пример 4: Фильтрация и трансформация
words = ['apple', 'banana', 'cherry', 'date']
long_words = [w.upper() for w in words if len(w) > 5]
print(long_words) # ['BANANA', 'CHERRY']
# Пример 5: Работа с вложенными списками
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
first_row = matrix[0]
first_element = matrix[0][0]
print(first_row) # [1, 2, 3]
print(first_element) # 1
# Развернуть матрицу
flattened = [item for row in matrix for item in row]
print(flattened) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
Производительность списков
import time
# Доступ по индексу — O(1)
nums = list(range(1000000))
start = time.time()
for _ in range(100000):
_ = nums[500000]
print(f"Доступ: {time.time() - start:.4f}s")
# Добавление в конец — O(1)
start = time.time()
for i in range(10000):
nums.append(i)
print(f"Append: {time.time() - start:.4f}s")
# Вставка в начало — O(n)
nums = list(range(10000))
start = time.time()
for i in range(1000):
nums.insert(0, i) # медленно!
print(f"Insert(0): {time.time() - start:.4f}s")
Списки vs другие структуры
# Список (list) — изменяемый, для последовательности
fruits = ['apple', 'banana']
fruits.append('orange') # можно изменять
# Кортеж (tuple) — неизменяемый, для фиксированной последовательности
point = (10, 20)
# point[0] = 15 # Error! неизменяемый
# Множество (set) — для уникальных элементов, без порядка
unique_nums = {1, 2, 3, 2, 1}
print(unique_nums) # {1, 2, 3}
# Словарь (dict) — для пар ключ-значение
user = {'name': 'Ivan', 'age': 30}
user['email'] = 'ivan@example.com'
Когда использовать списки
✅ Используй список когда:
- Нужно хранить упорядоченную коллекцию
- Нужен доступ по индексу
- Элементы часто добавляются/удаляются
- Нужна базовая работа с последовательностями
❌ НЕ используй список когда:
- Нужны уникальные элементы → используй set
- Данные никогда не изменяются → используй tuple
- Нужны быстрые поиски → используй set или dict
- Нужны пары ключ-значение → используй dict
Резюме
Список в Python — это базовая и мощная структура данных. Он универсален, быстр для большинства операций и очень flexible. Понимание списков, comprehensions и методов их обработки — это ключевой навык любого Python разработчика.