Добавить в корзинуПозвонить
Найти в Дзене
Код как искусство

Списки и словари: две структуры, которые заменят вам 100 переменных

Когда вы только начинаете программировать, первое искушение — завести переменную для всего: число1, число2, число3… Очень быстро код превращается в кашу. Python предлагает элегантное решение: списки и словари. Они позволяют хранить коллекции данных, обрабатывать их циклами и писать код, который понятен с первого взгляда. В этой статье разберём: Список в Python — это упорядоченная коллекция, которая может содержать любые типы данных: числа, строки, даже другие списки. Создаётся квадратными скобками: fruits = ["яблоко", "банан", "апельсин"]
numbers = [1, 2, 3, 4, 5]
mixed = [42, "привет", 3.14, [1, 2]] Индексация начинается с нуля: python print(fruits[0]) # яблоко
print(fruits[-1]) # апельсин (отрицательный индекс — с конца) Список изменяем: fruits[1] = "манго" # замена
fruits.append("киви") # добавить в конец
fruits.insert(1, "груша") # вставить на позицию 1 del fruits[0] # удалить по индексу
fruits.remove("апельсин") # удалить по значению
last =
Оглавление

Когда вы только начинаете программировать, первое искушение — завести переменную для всего: число1, число2, число3… Очень быстро код превращается в кашу. Python предлагает элегантное решение: списки и словари. Они позволяют хранить коллекции данных, обрабатывать их циклами и писать код, который понятен с первого взгляда.

В этой статье разберём:

  • как создать и изменять список,
  • когда использовать словарь вместо списка,
  • основные методы работы с ними,
  • типичные ошибки новичков.

1. Список: упорядоченный набор чего угодно

Список в Python — это упорядоченная коллекция, которая может содержать любые типы данных: числа, строки, даже другие списки. Создаётся квадратными скобками:

fruits = ["яблоко", "банан", "апельсин"]
numbers = [1, 2, 3, 4, 5]
mixed = [42, "привет", 3.14, [1, 2]]

Доступ к элементам

Индексация начинается с нуля:

python

print(fruits[0]) # яблоко
print(fruits[-1]) # апельсин (отрицательный индекс — с конца)

Изменение и добавление

Список изменяем:

fruits[1] = "манго" # замена
fruits.append("киви") # добавить в конец
fruits.insert(1, "груша") # вставить на позицию 1

Удаление

del fruits[0] # удалить по индексу
fruits.remove("апельсин") # удалить по значению
last = fruits.pop() # удалить и вернуть последний

Перебор элементов

Цикл for делает код лаконичным:

for fruit in fruits:
print(fruit)

Если нужен и индекс, и значение — используйте enumerate:

for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")

2. Словарь: храним данные с понятными именами

Словарь — это неупорядоченная коллекция пар «ключ — значение». Ключи обычно строки, но могут быть и числа, а значения — любые типы. Создаётся фигурными скобками:

person = {
"name": "Анна",
"age": 28,
"city": "Москва"
}

Доступ к значениям

print(person["name"]) # Анна
print(person.get("age")) # 28, безопасный доступ
print(person.get("job", "не указано")) # вернёт "не указано", если ключа нет

Добавление и изменение

person["job"] = "разработчик" # новый ключ
person["age"] = 29 # изменить существующий

Удаление

del person["city"] # удалить ключ
age = person.pop("age") # удалить и вернуть значение

Перебор

# по ключам
for key in person:
print(key, person[key])

# по парам (ключ, значение)
for key, value in person.items():
print(f"{key}: {value}")

3. Когда что использовать?

Правило простое:

  • Список — когда важен порядок элементов, и вы обращаетесь к ним по индексу. Например, список учеников в классе, результаты измерений, очередь задач.
  • Словарь — когда нужно быстро находить значение по уникальному ключу. Например, данные пользователя (имя → возраст), настройки программы, кэш результатов.

Если вы храните список объектов, каждый из которых имеет свойства — часто используют список словарей:

users = [
{"name": "Иван", "age": 25},
{"name": "Мария", "age": 30}
]

4. Частые ошибки новичков

❌ Использование списка там, где нужен словарь

Попытка искать элемент в списке по имени каждый раз — это медленно и громоздко:

# Плохо
users = [["Иван", 25], ["Мария", 30]]
for user in users:
if user[0] == "Иван":
print(user[1])

❌ Ошибка при копировании

Когда пишете new_list = my_list, обе переменные ссылаются на один и тот же список. Изменения отразятся везде. Для копирования используйте my_list.copy() или list(my_list).

a = [1, 2, 3]
b = a
b.append(4)
print(a) # [1, 2, 3, 4] — неожиданно!

❌ Использование несуществующего ключа

Обращение person["job"] вызовет KeyError, если ключа нет. Всегда используйте метод get().

❌ Изменение списка во время его перебора

Это может привести к пропуску элементов или ошибке. Лучше создать новый список или перебирать копию.

# Опасно
for fruit in fruits:
if fruit == "банан":
fruits.remove(fruit)

# Безопасно
for fruit in fruits[:]: # перебираем копию
if fruit == "банан":
fruits.remove(fruit)

5. Живой пример: телефонная книга

Объединим списки и словари в небольшом проекте. Программа хранит контакты и позволяет искать их по имени.

contacts = []

while True:
print("\n1. Добавить контакт")
print("2. Найти контакт")
print("3. Показать все")
print("4. Выход")
choice = input("Выберите действие: ")

if choice == "1":
name = input("Имя: ")
phone = input("Телефон: ")
contacts.append({"name": name, "phone": phone})
print(f"Контакт {name} добавлен.")
elif choice == "2":
search = input("Введите имя для поиска: ")
found = [c for c in contacts if c["name"].lower() == search.lower()]
if found:
for c in found:
print(f"{c['name']} — {c['phone']}")
else:
print("Не найдено.")
elif choice == "3":
for c in contacts:
print(f"{c['name']} — {c['phone']}")
elif choice == "4":
break
else:
print("Неверный выбор.")

В этом коде мы использовали:

  • список для хранения всех контактов,
  • словарь для каждого контакта,
  • цикл while для меню,
  • генератор списка для поиска.

Заключение

Списки и словари — это основа основ. Научившись ими пользоваться, вы перестанете писать сотни однотипных переменных и начнёте мыслить структурами. Это делает код короче, чище и гораздо легче для отладки.

Что дальше? В следующей статье мы разберём, как читать и записывать файлы, чтобы ваши программы не забывали данные после закрытия. А пока — возьмите любую задачу из реальной жизни (список дел, телефонная книга, расходы) и попробуйте реализовать её с помощью списков и словарей.

Пишите в комментариях, с какими структурами вы столкнулись в своих проектах. Обсудим!