Вопрос 13 из 16
Основы Python
Как использовать встроенные коллекции (list, set, dictionary)?
Показать ответ
Короткий ответ
- list: упорядоченная изменяемая коллекция
- set: неупорядоченная коллекция уникальных элементов
- dict: коллекция пар ключ-значение
Развернутый ответ
В Python есть три основных типа встроенных коллекций: списки (list), множества (set) и словари (dictionary). Вот как их эффективно использовать:
1. Списки (list)
Упорядоченные изменяемые коллекции с дубликатами элементов.
Основные операции:
# Создание
numbers = [1, 2, 3]
chars = list("abc") # ['a', 'b', 'c']
# Добавление элементов
numbers.append(4) # [1, 2, 3, 4]
numbers.insert(1, 1.5) # [1, 1.5, 2, 3, 4]
numbers.extend([5, 6]) # [1, 1.5, 2, 3, 4, 5, 6]
# Удаление
numbers.pop() # Удаляет последний элемент (6)
numbers.pop(0) # Удаляет по индексу (1)
numbers.remove(3) # Удаляет первое вхождение значения
# Срезы
subset = numbers[1:4] # [1.5, 2, 4]
reversed_list = numbers[::-1] # Разворот списка
# Сортировка
numbers.sort() # Изменяет исходный список
sorted_numbers = sorted(numbers) # Возвращает новый список
2. Множества (set)
Неупорядоченные изменяемые коллекции уникальных элементов (хешируемых объектов).
Основные операции:
# Создание
unique_numbers = {1, 2, 3}
letters = set("hello") # {'h', 'e', 'l', 'o'}
# Добавление/удаление
unique_numbers.add(4) # {1, 2, 3, 4}
unique_numbers.discard(2) # {1, 3, 4} (без ошибки если элемента нет)
unique_numbers.remove(3) # {1, 4} (KeyError если элемента нет)
# Операции множеств
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # Объединение: {1, 2, 3, 4, 5}
print(a & b) # Пересечение: {3}
print(a - b) # Разность: {1, 2}
# Проверка принадлежности
if 1 in unique_numbers:
print("Элемент найден")
3. Словари (dict)
Неупорядоченные изменяемые коллекции пар ключ-значение с уникальными ключами.
Основные операции:
# Создание
person = {"name": "Alice", "age": 25}
colors = dict(red="#FF0000", green="#00FF00")
# Доступ и изменение
person["age"] = 26 # Изменение значения
person["city"] = "Berlin" # Добавление новой пары
value = person.get("name") # Безопасное получение (None если нет ключа)
value = person["name"] # KeyError если ключа нет
# Удаление
age = person.pop("age") # Удаляет и возвращает значение
del person["city"] # Удаление без возврата значения
# Итерация
for key in person: # По ключам
print(key, person[key])
for key, value in person.items(): # По парам
print(f"{key}: {value}")
# Словарные включения (dict comprehension)
squares = {x: x**2 for x in range(5)} # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
4. Полезные методы
Для списков:
index()
— поиск индекса элементаcount()
— подсчет вхожденийcopy()
— создание копии
Для множеств:
update()
— добавление нескольких элементовisdisjoint()
— проверка на отсутствие общих элементовissubset()
— проверка на подмножество
Для словарей:
setdefault()
— безопасное добавлениеupdate()
— объединение словарейfromkeys()
— создание словаря с общим значением
5. Особенности Python 3.9+
- Объединение словарей оператором
|
:
dict1 = {"a": 1}
dict2 = {"b": 2}
combined = dict1 | dict2 # {'a': 1, 'b': 2}
Выбор коллекции зависит от задачи: списки — для упорядоченных данных, множества — для уникальности, словари — для связки ключ-значение.