5.90M
Категория: ПрограммированиеПрограммирование

4 .1

1.

Разработка
программных модулей

2.

Практическая работа
https://play.myquiz.ru/

3.

Кортежи
Списки – изменяемые коллекции, строки – неизменяемые
последовательности Unicode символов. В Python имеются
и неизменяемые последовательности, содержащие, в
отличие от строк, абсолютно произвольные данные. Такие
коллекции называются кортежами.

4.

Кортежи
Рассмотрим следующий программный код:
my_list = [1, 2, 3, 4, 5]
Мы объявили список чисел и присвоили его переменной
my_list. Содержимое списка можно изменять.
Следующий программный код:
my_list = [1, 2, 3, 4, 5]
my_list[0] = 9
my_list[4] = 7

5.

Кортежи
Заменив квадратные скобки при объявлении списка на круглые, мы
объявляем кортеж:
my_tuple = (1, 2, 3, 4, 5)
Кортежи по своей природе (задумке) – неизменяемые аналоги списков.
Поэтому программный код:
my_tuple = (1, 2, 3, 4, 5)
my_tuple[0] = 9
my_tuple[4] = 7
print(my_tuple)
приводит к ошибке
TypeError: 'tuple' object does not support item assignment

6.

Кортежи
В литеральной форме кортеж записывается в виде
последовательности элементов в круглых скобках, а список – в
квадратных.
empty_tuple = ()
# пустой кортеж
point = (1.5, 6.0)
# кортеж из двух чисел
names = ('Timur', 'Ruslan', 'Roman')
# кортеж из трех строк
info = ('Timur', 'Guev', 28, 170, 60, False)
# кортеж из 6 элементов
разных типов
nested_tuple = (('one', 'two'), ['three', 'four']) # кортеж из кортежа и
списка

7.

Кортежи
Кортежи могут хранить и содержать в себе объекты любых типов (даже
составных) и поддерживают неограниченное количество уровней
вложенности.
Для создания кортежа с единственным элементом после значения
элемента ставят замыкающую запятую:
my_tuple = (1,)
print(type(my_tuple)) # <class 'tuple'>
Что будет?
my_tuple = (1)
print(type(my_tuple))

8.

Свойства кортежей
• скорость – кортежи быстрее работают, так как из-за
неизменяемости хранятся в памяти иначе, и операции с их
элементами выполняются заведомо быстрее, чем с компонентами
списка. Одна из причин существования кортежей –
производительность.
• безопасность – неизменяемость превращает их в идеальные
константы. Заданные кортежами константы делают код более
читаемым и безопасным. Кроме того, в кортеже можно безопасно
хранить данные, не опасаясь, что они будут случайно или
преднамеренно изменены в программе.

9.

Свойства кортежей
Сталкивались ли вы с кортежами? Если да – в каких ситуациях?

10.

Свойства кортежей
Функции, возвращающие несколько значений, возвращают именно
кортежи.
def get_powers(num):
return num**2, num**3, num**4
Результатом выполнения следующего кода:
result = get_powers(5)
print(type(result))
print(result)
будет:
<class 'tuple'>
(25, 125, 625)

11.

Свойства кортежей
• Списки предназначены для объединения неопределенного
количества однородных сущностей. Кортежи, как правило,
объединяют под одним именем несколько разнородных объектов,
имеющих различный смысл.
• Тот факт, что кортеж является неизменяемым вовсе не означает,
что мы не можем поменять содержимое списка в кортеже.

12.

Свойства кортежей
my_tuple = (1, 'python', [1, 2, 3])
print(my_tuple)
my_tuple[2][0] = 100
my_tuple[2].append(17)
print(my_tuple)
(1, 'python', [1, 2, 3])
(1, 'python', [100, 2, 3, 17])
При этом важно понимать: меняется список, а не кортеж. Списки
являются ссылочными типами данных, поэтому в кортеже хранится
ссылка на список, которая не меняется при изменении самого списка.

13.

Атомарные и сссылочные типы данных
Атомарные:
• числа;
• строки;
Ссылочные:
списки;
кортежи;
словари;
функции;
классы;

14.

Модель данных
Зайдем издалека. Что значит «инициализировать переменную»?

15.

Модель данных
Значение переменной (например, целочисленное число) в языке
Python, по сути, является объектом. Объект, в данном случае – это
абстракция для представления данных, данные – это числа, списки,
строки и т.п. При этом, под данными следует понимать как
непосредственно сами объекты, так и отношения между ними.
Каждый объект имеет три атрибута – это идентификатор, значение и
тип. Идентификатор – это уникальный признак объекта, позволяющий
отличать объекты друг от друга, а значение – непосредственно
информация, хранящаяся в памяти, которой управляет интерпретатор.

16.

Модель данных
При инициализации переменной, на уровне интерпретатора,
происходит следующее:
• создается целочисленный объект 5 (можно представить, что в этот
момент создается ячейка и 5 кладется в эту ячейку);
• данный объект имеет некоторый идентификатор, значение: 5, и тип:
целое число;
• посредством оператора “=” создается ссылка между переменной b и
целочисленным объектом 5 (переменная b ссылается на объект 5).

17.

Модель данных
Имя переменной не должно совпадать с ключевыми словами
интерпретатора Python. Список ключевых слов можно посмотреть и
проверить с помощью модуля keyword и команд kwlist и iskeyword.
Для того, чтобы посмотреть на объект с каким идентификатором
ссылается данная переменная, можно использовать функцию id().
Тип переменной можно определить с помощью функции type()

18.

Модель данных
В Python существуют изменяемые и неизменяемые типы.
К неизменяемым (immutable) типам относятся: целые числа (int), числа
с плавающей точкой (float), комплексные числа (complex), логические
переменные (bool), кортежи (tuple), строки (str) и неизменяемые
множества (frozen set).
К изменяемым (mutable) типам относятся: списки (list), множества (set),
словари (dict).
Как уже было сказано ранее, при создании переменной, вначале
создается объект, который имеет уникальный идентификатор, тип и
значение, после этого переменная может ссылаться на созданный
объект.

19.

Модель данных
Неизменяемость типа данных означает, что созданный объект больше
не изменяется. Например, если мы объявим переменную k = 15, то
будет создан объект со значением 15, типа int и идентификатором,
который можно узнать с помощью функции id().
Объект с id = 1672501744 будет иметь значение 15 и изменить его уже
нельзя.
Если тип данных изменяемый, то можно менять значение объекта.
Например, создадим список [1, 2], а потом заменим второй элемент на
3.

20.

Домашнее задание
Подсчитать количество вхождений 3 в кортеже (3, 5, 19, 24, 13, 3, 7, 9, 3) без использования
функции count.

21.

ПОДВЕДЕМ ИТОГИ
English     Русский Правила