undo
search menu close

Введение в коллекции

📅 17 апреля 2025 г. 1:00

Встроенные типы данных в Python позволяют эффективно работать с информацией различного формата. И если числовые и логические типы предназначены для хранения отдельных значений, то коллекции служат контейнерами для одновременного хранения множества элементов.

Коллекции в Python представлены такими типами данных, как уже знакомые нам строки, списки, кортежи, множества и словари. Каждый из этих типов предназначен для решения определённых задач и обладает уникальными свойствами, влияющими на способ хранения и обработку данных.

Каждая встроенная коллекция обладает уникальным набором свойств, определяемых её упорядоченностью, изменяемостью и требованиями к уникальности элементов. Выбор подходящей коллекции зависит от конкретной задачи и требований к хранению и обработке данных.

Название Пример Упорядоченность Изменяемость Уникальность
Строки "Александр"
Списки ["Хлеб", "Молок", "Колбаса"]
Кортежи ("Математика", "Математика")
Множества {1, 2, 3, 4, 5}
Словари {"Россия": "Москва", "Китай": "Пекин"} ❌ (с 3.7 – ✅) ключи – ✅
значения – ❌

Основные коллекции

Давайте кратко рассмотрим каждую из встроенных коллекций, представленных в Python.

1. Cтроки, которые мы уже неоднократно использовали, представляют собой упорядоченную последовательность символов, заключённую в двойные " или одинарные ' кавычки:

username = "Sauron999"

Строки неизменяемы, то есть мы не можем изменить отдельные символы в строке после её создания. Поэтому все операции над строками на самом деле создают новую строку.

2. Списки – наиболее гибкая и часто используемая коллекция в Python, которая содержит упорядоченный набор элементов в квадратных скобках []:

books = ["Хоббит, или Туда и обратно", "Баллада об Аотру и Итрун", "Братство Кольца"]

Списки изменяемы, поэтому мы можем свободно добавлять, удалять и изменять их элементы.

3. Кортежи, как и списки, хранят элементы в определённом порядке, однако они неизменяемы и создаются с помощью круглых скобок ():

hobbits = ("Фродо Бэггинс", "Бильбо Бэггинс")

После создания кортежа в него невозможно внести какие-либо изменения, что делает его полезным для хранения данных, которые не должны подвергнуться случайным изменениям, например, какие-то константы.

4. Множества в Python представляют собой неупорядоченную коллекцию уникальных элементов. Они во многом напоминают математические множества и определяются путем перечисления элементов в фигурных скобках {}:

regions = {"Хоббитон", "Тростниковая Топь", "Иглоушко", "Малоройка"}

Множества являются изменяемыми, что позволяет добавлять, изменять и удалять элементы. Однако, как уже упоминалось, они гарантируют, что каждый элемент в множестве будет присутствовать только один раз.

5. Словари в Python очень похожи на словари в реальной жизни, и организуют данные в виде пар «ключ-значение», заключённых в фигурные скобках {}:

heroes = {"Арагорн": 2931, "Леголас": 3018, "Бард I": 2941}

Ключи словаря должны быть уникальными, в то время как значения могут повторяться. Словари изменяемы, что позволяет добавлять, удалять и изменять пары «ключ-значение».

Исторически словари считались неупорядоченными коллекциями. Однако начиная с Python 3.7, словари гарантированно сохраняют порядок вставки элементов.

Упорядоченность коллекций

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

При этом в строках, списках и словарях каждый элемент имеет свой порядковый номер, называемый индексом, по которому можно получить этот элемент, указав его в квадратных скобках:

sport = ["Теннис", "Футбол", "Волейбол"]
print(sport[1])
# Вывод: Футбол

В программировании принято начинать считать с 0, поэтому первый элемент "Теннис" находится по индексу 0, второй элемент "Футбол" – по индесу 1 и так далее. Более подробно механизм работы с такими коллекциями мы рассмотрим далее.

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

sportsmen = {"Том Брэди": 8, "Майкл Фелпс": 7}
print(sportsmen["Том Брэди"])
# Вывод: 8

Изменяемость коллекций

Списки, словари и множества предоставляют возможность добавлять, удалять и изменять элементы после создания.

Например, изменим элемент списка по индексу:

berries = ["Голубика", "Малина", "Ежевика"]
berries[0] = "Клюква"
print(berries) 
# Вывод: ["Клюква", "Малина", "Ежевика"]

Или значение словаря по ключу:

poems = {"Гомер": "Одиссея", "Вергилий": "Энеида"}
poems["Гомер"] = "Илиада"
print(poems) 
# Вывод: {'Гомер': 'Илиада', 'Вергилий': 'Энеида'}

В множествах нельзя напрямую обращаться к элементам, но можно добавить новый элемент с помощью метода set.add():

currencies = {"Белорусский рубль", "Казахский тенге"}
currencies.add("Армянский драм")
print(currencies) 
# Вывод: {"Белорусский рубль", "Казахский тенге", "Армянский драм"}

Однако изменение по индексу элемента строки или кортежи приведет к исключению TypeError

Например, если мы хотим изменить имя "Вера" на "Лера", изменив элемент с индексом 0 на букву "Л", то это приведёт к ошибке:

name = "Вера"
name[0] = "Л" 
# Ошибка: TypeError: 'str' object does not support item assignment

Изменение элемента кортежа по индексу также вызовет исключение TypeError:

populations = (300000, 100000, 350000)
populations[1] = 420000 
# Ошибка: TypeError: 'tuple' object does not support item assignment

Но если кортеж содержит изменяемые объекты, такие как списки, то сами эти объекты могут быть изменены, хотя сам кортеж остается неизменным:

countries = ("Россия", "Китай", ["Италия", "Франция"])
cities[2][1] = "Италия"
print(cities) 
# Вывод: ("Россия", "Китай", ["Италия", "Франция"])

Уникальность коллекций

Множество является единственной встроенной коллекцией, которая гарантирует хранение только уникальных элементов. При попытке добавить уже существующий элемент, он будет автоматически проигнорирован:

numbers = {1, 2, 2, 3, 3, 3}
print(numbers) 
# Вывод: {1, 2, 3}

Требование уникальности также распространяется на ключи словарей. Каждый ключ в словаре должен быть уникальным. При добавлении элемента с уже существующим ключом, старое значение будет заменено новым:

drinks = {"Сок": 2, "Чай": 1, "Морс": 3}
drinks["Сок"] = 1
print(drinks) 
# Вывод: {'Сок': 1, 'Чай': 1, 'Морс': 3}
Задания для самопроверки

1. Какая коллекция предназначена для для хранения упорядоченной последовательности элементов, которые не могут быть изменены после создания?

 
Ответ

2. Создайте множество из следующего списка: [1, 2, 2, 3, 3, 3, 4]. Сколько элементов будет в таком множестве и почему?

 
Ответ

3. Какие коллекции сохраняют порядок, в котором элементы были добавлены в коллекцию?

 
Ответ

4. Представьте, что вам нужно хранить список уникальных идентификаторов пользователей, при этом порядок не имеет значения. Какой тип коллекции будет наиболее подходящим и почему?

 
Ответ

5. Что произойдет, если в строке "кора" попытаться изменить символ "к" на символ "н"?

 
Ответ
arrow_back_ios Назад
Дальше arrow_forward_ios

 💬 0 комментариев
person
email