Вместо использования range(len(. )) вы можете использовать enumerate() для перебора кортежа более питоническим способом: Напишите функцию, которая принимает один словарь, и возвращает другой, в котором ключами являются значения из первого словаря, а значениями соответствующие им ключи. Хотя переменные Python технически содержат ссылки на значения списка или словаря, люди часто говорят, что переменная содержит список или словарь.
Кортежи в Python
Python имеет несколько последовательных типов данных, которые позволяют хранить коллекции данных организованным и эффективным способом. Основные типы последовательностей — это строки, списки, кортежи и объекты диапазонов.
В этой статье вы познакомитесь с основами кортежей Python. Мы покажем вам, как создать кортеж, получить доступ к элементам, распаковать кортеж и многое другое.
Кортежи похожи на списки с основным отличием в том, что списки изменяемы, а кортежи неизменны. Это означает, что кортежи не могут быть изменены после создания.
Кортежи могут хранить как разнородные, так и однородные данные, но обычно используются для хранения коллекций разнородных элементов.


Кортежи в Python
- start — это индекс, с которого начинается извлечение. Когда используется отрицательный индекс, он указывает смещение от конца кортежа. Если этот аргумент опущен, нарезка начинается с индекса 0.
- stop — индекс, до которого следует завершить извлечение; результат не включает элемент «стоп». Когда используется отрицательный индекс, он указывает смещение от конца кортежа. Если этот аргумент опущен или превышает длину кортежа, нарезка выполняется до конца кортежа.
- step — необязательный аргумент, указывающий шаг нарезки. Если не указано, по умолчанию используется 1. Если используется отрицательное значение, срез принимает элементы в обратном порядке.
Создание кортежей
Кортежи создаются путем помещения элементов в круглые скобки [] , разделенных запятыми. В них может быть любое количество предметов, которые могут быть разных типов. Вот пример:
Кортеж может содержать элементы со смешанными типами данных. Вы также можете объявлять вложенные кортежи, где еще одним из его элементов являются списки, кортежи или словари:
Круглые скобки без элементов между ними обозначают пустой кортеж:
Чтобы создать кортеж только с одним элементом, вы должны добавить запятую после элемента:
Кортежи также можно создавать с помощью конструктора tuple() :
Другой способ создания кортежа — использовать функцию упаковки кортежа, которая позволяет вам создать кортеж из последовательности объектов, разделенных запятыми:

Но основной способ отличия кортежей от списков заключается в том, что кортежи, как и строки, являются неизменяемыми. Кортежам нельзя изменять, добавлять или удалять их значения. Если вы попробуете изменить индекс в кортеже, то получите TypeError. Многое из того, что вы можете сделать со списками, также может быть сделано со строками индексы; срезы ; и используя их с for , с len и с операторами in и not in. Такой способ создания словаря очень хорош, если в качестве ключей могут использоваться только строки а точнее допустимые идентификаторы имен переменных.
Методы словаря
Метод clear() удаляет все элементы словаря, но не удаляет сам словарь. В итоге остается пустой словарь:
Словарь – это изменяемый тип данных. Следовательно, как и список он передается в функцию по ссылке. Поэтому иногда, чтобы избежать нежелательного изменения глобального словаря его копируют. Это делают и с другими целями.
Метод fromkeys() позволяет создать словарь из списка, элементы которого становятся ключами. Применять метод можно как классу dict , так и к его объектам:
Метод pop() удаляет из словаря элемент по указанному ключу и возвращает значение удаленной пары. Метод popitem() не принимает аргумента, удаляет элемент по принципу «последним вошел, первым вышел» и возвращает его в программу в виде кортежа (ключ, значение) .
С помощью setdefault() можно добавить элемент в словарь:
Равносильно nums[4] = ‘four’ , если элемент с ключом 4 отсутствует в словаре. Если он уже есть, то nums[4] = ‘four’ перезапишет старое значение, setdefault() – нет.
С помощью update() можно добавить в словарь другой словарь:
Также метод обновляет значения существующих ключей. Включает еще ряд особенностей.

Словари | Python
Практическая работа
Создайте словарь, связав его с переменной school , и наполните данными, которые бы отражали количество учащихся в разных классах (1а, 1б, 2б, 6а, 7в и т. п.). Внесите изменения в словарь согласно следующему: а) в одном из классов изменилось количество учащихся, б) в школе появился новый класс, с) в школе был расформирован (удален) другой класс. Вычислите общее количество учащихся в школе.
Напишите функцию, которая принимает один словарь, и возвращает другой, в котором ключами являются значения из первого словаря, а значениями – соответствующие им ключи. Создайте словарь, передайте его в функцию. Выведите на экран исходный и «перевернутый» словари.
Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса

Кортежи могут быть созданы с помощью функции tuple() . Если вызвать данную функцию без аргументов, то она вернет пустой кортеж: К тому же данная матрица является симметричной относительно главной диагонали диагонали от левого верхнего угла к правому нижнему. Создайте словарь, связав его с переменной school , и наполните данными, которые бы отражали количество учащихся в разных классах 1а, 1б, 2б, 6а, 7в и т.
Списки в кортежах
Кортежи могут содержать списки, также как списки быть вложенными в другие списки.
Как вы думаете, можем ли мы изменить список [«param», 10, 20] вложенный в кортеж nested ? Список изменяем, кортеж – нет. Если вам кажется, что нельзя, то вам кажется неправильно. На самом деле можно:
Примечание. Выражения типа nested[2][1] используются для обращения к вложенным объектам. Первый индекс указывает на позицию вложенного объекта, второй – индекс элемента внутри вложенного объекта. Так в данном случае сам список внутри кортежа имеет индекс 2, а элемент списка 10 – индекс 1 в списке.
Странная ситуация. Кортеж неизменяем, но мы все-таки можем изменить его. На самом деле кортеж остается неизменяемым. Просто в нем содержится не сам список, а ссылка на него. Ее изменить нельзя. Но менять сам список можно.
Кортеж содержит переменную-ссылку. Поменять ее на другую ссылку нельзя. Но кортеж не содержит самого списка. Поэтому его можно менять как угодно:
Однако такой номер не проходит с неизменяемыми типами:
Они передаются в кортеж как и в функцию – по значению. То есть их значение копируется в момент передачи.

Кортежи. Урок 22 курса Python. Введение в программирование
Содержание статьи