Khranenie_dannykh_kortezhi_slovari

Содержание

Слайд 2

А что там внутри?

Если все операции с данными выполняет процессор, используя оперативную

А что там внутри? Если все операции с данными выполняет процессор, используя
память, то что произойдет, когда в программе инициализируется переменная?

a = 5

Не питон

Переменная – поименованная область памяти, хранящая данные в ходе выполнения программы.

Слайд 3

А дальше?

a = 5

a = а+1

b = а

А дальше? a = 5 a = а+1 b = а

Слайд 4

А в питоне?

a = 5

В других языках программирования переменная обозначает ячейку памяти

А в питоне? a = 5 В других языках программирования переменная обозначает
с хранящимся в ней значением. В Python переменная является ссылкой на область памяти.

Ссылка - это адрес объекта в памяти

Слайд 5

А дальше?

a = а+1

При изменении значения переменной будет выделяться новый участок памяти

А дальше? a = а+1 При изменении значения переменной будет выделяться новый
для новых данных, а предыдущий участок будет очищен.

Слайд 6

Атомарные и ссылочные типы

Атомарные - при присваивании одного объекта другому копируется их

Атомарные и ссылочные типы Атомарные - при присваивании одного объекта другому копируется
значение.

Ссылочные - при присваивании копируется только указатель на объект, таким образом, обе переменные после присваивания используют одно и то же значение.
+ экономия памяти;
- при изменении исходной переменной меняются все, ссылающиеся на неё.

a=5
b=a

Память

а

b

Слайд 7

Ссылочные

b = а

Ссылочные b = а

Слайд 8

А можно новый объект?

Если при присваивании переменной ссылочного типа необходимо, чтобы обе

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

Создание нового объекта в памяти:
L = [1,2,3]
L2 = list(L)
Также можно использовать функцию copy() и полный срез [:] объекта.

Слайд 9

Изменяемые и неизменяемые типы

При создании переменной в памяти сначала создается объект, который

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

Неизменяемость типа данных означает, что созданный объект больше не изменяется и мы можем только поменять ссылку на участок в памяти.

Слайд 10

Изменяемые и неизменяемые типы

Если тип данных изменяемый, то можно менять значение объекта. Т.к.

Изменяемые и неизменяемые типы Если тип данных изменяемый, то можно менять значение
в переменной хранятся ссылки на объекты со значениями, а не непосредственно сами значения.

Слайд 11

Кто есть кто?

Оператор “==” проверяет равенство значений объектов.
Оператор is проверяет идентичность

Кто есть кто? Оператор “==” проверяет равенство значений объектов. Оператор is проверяет
самих объектов.

# ссылочный объект типа list
l1 = [1, 2, 3] # создадим объект списка l1
l2 = [1, 2, 3] # создадим объект списка l2
l3 = l1 # присвоим ссылку на объект l1 переменной l3
print(l1 == l2) # True -- списки равны
print(l1 == l3) # True -- списки равны
print(l1 is l2) # False -- ссылаются на два разных объекта
print(l1 is l3) # True -- содержат ссылки на один и тот же объект

Функция id() возвращает адрес ячейки памяти переменной

n = [5,6,10]
print(n) # [5, 6, 10]
print(id(n)) # 140312184155336

Слайд 12

Словари Python

Словари Python

Слайд 13

Что это?

Словарь (хэш, ассоциативный массив) – изменяемая неупорядоченная последовательность данных разного типа

Что это? Словарь (хэш, ассоциативный массив) – изменяемая неупорядоченная последовательность данных разного
в формате «ключ-значение».

D={} #пустой словарь
D=dict() #преобразовать в словарь (или создать пустой)
D= dict(Ivan="manager", Mark="worker")
D = {"A1":"123", "A2":"456"} #словари со значениями

Генератор словаря
D = {ключ: значение for параметр in диапазон}
D= {i: i**2 for i in range(5)}
#{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Слайд 14

Обработка словарей

Добавление элементов происходит при обращении к новому ключу. Если ключ существовал,

Обработка словарей Добавление элементов происходит при обращении к новому ключу. Если ключ
его значение заменяется.
D[“China”] = “Beijing”
# {“Russia”: “Moscow”, “China”: “Beijing”, “USA”: “Washington”}
D[“USA”] = “Moscow”
# {“Russia”: “Moscow”, “China”: “Beijing”, “USA”: “Moscow”}

Доступ к значению происходит по ключу. Ключом могут быть только данные неизменяемых типов, а значениями – любых типов. Ключи должны быть уникальными, значения могут повторяться.
print(D[‘Russia’]) #Moscow

D = {“Russia”: “Moscow”, “USA”: “Washington”}

Слайд 15

Обработка словарей
Удаление элементов производится оператором del
del D["USA"] # {“Russia”: “Moscow”, “China”: “Beijing”}
Оператор

Обработка словарей Удаление элементов производится оператором del del D["USA"] # {“Russia”: “Moscow”,
in проверяет наличие ключа (но не значения)
"Russia" in D# True
"France" in D# False
При переборе словаря циклом for счетчик цикла также принимает значения ключа. Чтобы получить значение нужно обратиться к нему использую ключ.
for i in D:
print(i, D[i])
# Russia Moscow
# China Beijing

Слайд 16

Методы словарей

Данные методы позволяют получать отдельно ключи и отдельно значения. Они возвращают

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

Метод items() возвращает пару ключ-значение в виде кортежа.
print(D.items())
# [(“Russia”, “Moscow”), (“China”, “Beijing”)]

Слайд 17

Методы словарей

my_dict={‘a’:42 ,’b’:42}
my_dict.update({‘а’: 77, ‘с’: 77}) #{‘а’: 77, ‘b ‘: 42, ‘с’:

Методы словарей my_dict={‘a’:42 ,’b’:42} my_dict.update({‘а’: 77, ‘с’: 77}) #{‘а’: 77, ‘b ‘: 42, ‘с’: 77}
77}

Слайд 18

Методы словарей

my_dict.setdefault('с') #{'а': 123, 'b': 42, 'с': None}
my_dict.setdefault('с ', 43) #{'a':

Методы словарей my_dict.setdefault('с') #{'а': 123, 'b': 42, 'с': None} my_dict.setdefault('с ', 43)
123, 'b': 42, 'c': 43}
x= my_dict.setdefault('с') #43
dict.fromkeys(['a', 'b']) #{'a': None, 'b': None}
dict.fromkeys(['a', 'b'], 42) # {'a': 42, 'b': 42}

Слайд 19

Словари

Можно хранить структурно связанные данные
man = {'name': "Serg,
'jobs': ['programmer', 'writer'],
'web': 'www.bestsite.org',
'home': {'city':

Словари Можно хранить структурно связанные данные man = {'name': "Serg, 'jobs': ['programmer',
'Moscow', 'zip':129000}}
Перебрать все ключи
for key in man:
print(key, man[key])
Изменить значения
man[‘name’]=‘Mels’

Слайд 20

Словари

def get_female_local():
print('Женщина')
def get_male_local():
print('Мужчина')
так как функции - тоже объекты, то создаем

Словари def get_female_local(): print('Женщина') def get_male_local(): print('Мужчина') так как функции - тоже
словарь привязки ключа к имени функции
gender_handlers = {
'male': get_male_local,
'female': get_female_local
}
gender = 'male'
получаем по ключу нужную функцию и вызываем ее gender_handlers[gender]()

Слайд 21

Кортежи Python

Кортежи Python

Слайд 22

Что это?

Кортеж – неизменяемая упорядоченная последовательность данных разного типа.

T=() #пустой кортеж
T=tuple() #преобразовать

Что это? Кортеж – неизменяемая упорядоченная последовательность данных разного типа. T=() #пустой
кортеж
T= (1,2,3) #кортежи со значениями

Важно!
T = ('s') #создается строка
T= ('s', ) #создается кортеж

Также можно создавать кортеж генератором.
T=(i**2 for i in range(5)) #(0,1,4,9,16)

Слайд 23

Зачем кортежи, когда есть списки?

Назначение:
1) Меньший размер объектов по сравнению со списками.

Зачем кортежи, когда есть списки? Назначение: 1) Меньший размер объектов по сравнению
Экономия ресурсов и времени.
2) Безопасность данных от случайных (что хорошо) и намеренных (что не так хорошо) изменений.
3) Возможность использовать кортежи, как ключи словарей.
Имя файла: Khranenie_dannykh_kortezhi_slovari.pptx
Количество просмотров: 31
Количество скачиваний: 1