30 KiB
Отчёт по теме 3
Киреев Юрий, А-02-23
1. Запуск оболочки IDLE
В задании просят создать файл протокола, отчёт по лабораторной работе записан в файле report.md, который Вы сейчас читаете.
2. Преобразование простых базовых типов объектов
2.1. Преобразование в логический тип с помощью функции bool(<Объект>)
Некоторые примеры использования:
>>> logiz1 = bool(56)
>>> logoz2 = bool(0)
>>> logiz3 = bool("Beta")
>>> logiz4 = bool("")
>>> logiz1,logiz2,logiz3,logiz4
(True, False, True, False)
>>> type(logiz1),type(logiz2),type(logiz3),type(logiz3)
(<class 'bool'>, <class 'bool'>, <class 'bool'>, <class 'bool'>)
2.2. Преобразование в целое десятичное число объекта с заданной системой счисления
Для этого используем функцию int(<Объект>[,<Система счисления, в которой определен объект>]). По умолчанию система счисления принимается десятичной. Некоторые примеры использования:
>>> tt1=int(198.6) # Отбрасывается дробная часть
>>> tt2=int("-76") # Число – в строке символов, система по умолчанию - десятичная
>>> tt3=int("B",16) # В в шестнадцатиричной системе счисления переведено в десятичную - 11
>>> tt4=int("71",8)
>>> tt5=int("98.76")
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
tt5=int("98.76")
ValueError: invalid literal for int() with base 10: '98.76'
>>> tt1,tt2,tt3,tt4
(198, -76, 11, 57)
Диагностическое сообщение выдаётся потому, что int() читает строку и пытается выделить целое число, но в строке число с плавающей точкой, поэтому int() не может прочитать это число.
Преобразование целых чисел или строк символов в вещественное число – с помощью функции float(<Объект>). Некоторые примеры преобразований:
>>> flt1=float(789)
>>> flt2=float(-6.78e2)
>>> flt3=float("Infinity")
>>> flt4=float("-inf")
>>> flt1,flt2,flt3,flt4
(789.0, -678.0, inf, -inf)
2.3. Преобразование десятичных чисел в другие системы счисления
Примеры преобразования:
>>> hh=123
>>> dv1=bin(hh)
>>> vos1=oct(hh)
>>> shs1=hex(hh)
>>> dv1,vos1,shs1
('0b1111011', '0o173', '0x7b')
Для проверки выполним обратные преобразования:
>>> des1=int(dv1,2)
>>> des2=int(vos1,8)
>>> des3=int(shs1,16)
>>> des1,des2,des3
(123, 123, 123)
3. Преобразования более сложных базовых типов объектов
3.1. Преобразование в строку символов с помощью функции str(<Объект>)
Некоторые примеры использования:
>>> strk1=str(23.6)
>>> strk2=str(logiz3)
>>> strk3=str(["A","B","C"]) #Преобразуем список
>>> strk4=str(("A","B","C")) #Преобразуем кортеж
>>> strk5=str({"A":1,"B":2,"C":9}) #Преобразуем словарь
>>> strk1,strk2,strk3,strk4,strk5
('23.6', 'True', "['A', 'B', 'C']", "('A', 'B', 'C')", "{'A': 1, 'B': 2, 'C': 9}")
3.2. Преобразование элементов объекта в список с помощью функции list(<Объект>)
Некоторые примеры преобразований:
>>> spis1=list("Строка символов") #Заданная строка разделяется на символы
>>> spis2=list((124,236,-15,908)) #Кортеж превращается в список
>>> spis3=list({"A":1,"B":2,"C":9}) #Преобразование словаря в список
>>> spis1,spis2,spis3
(['С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в'], [124, 236, -15, 908], ['A', 'B', 'C'])
Инструкция, обеспечивающая создание из того же словаря списка с другими его частями (в данном случае, со значениями):
>>> spis4 = list({"A":1, "B":2, "C":9}.values())
>>> spis4
[1, 2, 9]
3.3. Преобразование элементов объектов в кортеж с помощью функции tuple(<Объект>)
Некоторые примеры преобразований:
>>> kort7=tuple('Строка символов') #Преобразование строки символов в кортеж
>>> kort8=tuple(spis2) #Преобразование списка в кортеж
>>> kort9=tuple({"A":1,"B":2,"C":9}) #Преобразование словаря в кортеж
>>> kort7,kort8,kort9
(('С', 'т', 'р', 'о', 'к', 'а', ' ', 'с', 'и', 'м', 'в', 'о', 'л', 'о', 'в'), (124, 236, -15, 908), ('A', 'B', 'C'))
3.4. Удаление объектов
Очистим оперативную память от ранее созданных объектов можно с помощью инструкции del:
>>> del strk5, kort8
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'des1', 'des2', 'des3', 'dv1', 'flt1', 'flt2', 'flt3', 'flt4', 'hh', 'kort7', 'kort9', 'logiz1', 'logiz3', 'logiz4', 'logoz2', 'shs1', 'spis1', 'spis2', 'spis3', 'spis4', 'strk1', 'strk2', 'strk3', 'strk4', 'tt1', 'tt2', 'tt3', 'tt4', 'vos1']
Как мы видим, указанные объекты не остались в оперативной памяти.
Создам строку со своей фамилией и инициалами, преобразую её в список, затем список – в кортеж и, наконец, кортеж – в строку:
>>> zad34='KireevYP'
>>> spis34=list(zad34)
>>> kort34=tuple(spis34)
>>> fin=str(kort34)
>>> zad34,spis34,kort34,fin
('KireevYP', ['K', 'i', 'r', 'e', 'e', 'v', 'Y', 'P'], ('K', 'i', 'r', 'e', 'e', 'v', 'Y', 'P'), "('K', 'i', 'r', 'e', 'e', 'v', 'Y', 'P')")
4. Арифметические операции
4.1. Сложение и вычитание
Некоторые примеры:
>>> 12+7+90 # Сложение целых чисел
109
>>> 5.689e-1 - 0.456 #Вычитание вещественных чисел
0.11289999999999994
>>> 23.6+54 #Сложение вещественного и целого чисел
77.6
>>> 14-56.7+89 # Сложение и вычитание целых и вещественных чисел
46.3
4.2 Умножение
Пример:
>>> -6.7*12 #Умножение вещественного числа на целое число
-80.4
4.3. Деление
Некоторые примеры:
>>> -234.5/6 #Деление вещественного числа на целое
-39.083333333333336
>>> a=178/45 #Деление двух целых чисел
>>> a,type(a)
(3.9555555555555557, <class 'float'>)
Результатом деления всегда будет вещественное число.
4.4. Деление с округлением вниз
Некоторые примеры:
>>> b=178//45 #Деление двух целых чисел
>>> b, type(b)
(3, <class 'int'>)
>>> c=-24.6//12.1 #Деление двух вещественных чисел
>>> c, type(c)
(-3.0, <class 'float'>)
При делении с округлением вниз результат может быть целым или вещественным.
4.5. Получение остатка от деления
Некоторые примеры:
>>> 148%33 #Остаток от деления двух целых чисел
16
>>> 12.6%3.8 #Остаток от деления двух вещественных чисел
1.2000000000000002
Попробуем смешанные комбинации типов чисел в этой операции:
>>> 12.6%4
0.5999999999999996
>>> 148%3.8
3.6000000000000068
Если в данной операции присутствует вещественное число, то и остаток тоже будет вещественным числом.
4.6. Возведение в степень
Некоторые примеры:
>>> 14**3 #Целое число возводится в целую степень
2744
>>> e=2.7**3.6 #Вещественное число возводится в вещественную степень
>>> e
35.719843790663525
Попробуем смешанные комбинации типов чисел в этой операции:
>>> 14**3.6
13367.830445904418
>>> 2.7**3
19.683000000000003
Как и в предыдущем подпункте, если присутствует вещественное число, то и результат тоже будет вещественным числом.
Попробуем операции с участием комплексных чисел:
>>> 2+3j+10
(12+3j)
>>> 2+3j-11
(-9+3j)
>>> 2+3j*5
(2+15j)
>>> b=2+3j
>>> b*5.5
(11+16.5j)
>>> c=b*5.5
>>> c,type(c)
((11+16.5j), <class 'complex'>)
>>> b//3 #Диагностическое сообщение, т.к. данную операцию нельзя применить к комплексным числам
Traceback (most recent call last):
File "<pyshell#82>", line 1, in <module>
b//3
TypeError: unsupported operand type(s) for //: 'complex' and 'int'
>>> b**3
(-46+9j)
>>> b**3.3
(-68.5109468174904-6.986605925999231j)
>>> b%8 #Диагностическое сообщение, т.к. данную операцию нельзя применить к комплексным числам
Traceback (most recent call last):
File "<pyshell#85>", line 1, in <module>
b%8
TypeError: unsupported operand type(s) for %: 'complex' and 'int'
>>> b/3
(0.6666666666666666+1j)
>>> b/3.3
(0.6060606060606061+0.9090909090909092j)
Нетрудно заметить, что в результате операции над числами разных типов получается число, имеющее наиболее сложный тип из тех типов, которые участвуют в операции.
5. Операции с двоичными представлениями целых чисел
5.1. Двоичная инверсия
Значение каждого бита в представлении числа заменяется на противоположное:
>>> dv1=9
>>> bin(dv1)
'0b1001'
>>> dv2=~dv1
>>> bin(dv2)
'-0b1010'
>>> dv2
-10
5.2. Двоичное "И"
Побитовое совпадение двоичных представлений чисел
>>> 7&9 # 111 и 1001 = 0001
1
>>> 7&8 # 111 и 1000 = 0000
0
>>> bin(7&9)
'0b1'
>>> bin(7&8)
'0b0'
5.3. Двоичное «ИЛИ»
Побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда равны 0
>>> 7|9 # 111 или 1001 = 1111
15
>>> bin(7|9)
'0b1111'
>>> 7|8 # 111 или 1000 = 1111
15
>>> bin(7|8)
'0b1111'
>>> 14|5 # 1110 или 0101 = 1111
15
>>> bin(14|5)
'0b1111'
>>> bin(8|2)
'0b1010'
>>> 8|2
10
5.4. Двоичное «исключающее ИЛИ»
Побитовое сравнение двоичных представлений чисел и 0 получается, только если оба сравниваемых разряда имеют одинаковые значения – оба 0 или оба 1.
>>> 14^5 # 1110 исключающее или 0101 = 1011
11
>>> bin(14^5)
'0b1011'
5.5. Сдвиг двоичного представления на заданное число разрядов влево или вправо
Некоторые примеры:
h=14 #Двоичное представление = 1110
bin(h)
'0b1110'
g=h<<2 # Новое двоичное представление = 111000
bin(g)
'0b111000'
g1=h>>1 # Новое двоичное представление = 0111
bin(g1)
'0b111'
g2=h>>2; bin(g2) # Новое двоичное представление = 0011
'0b11'
Число дополняется нулями, соответственно справа или слева. Выполним различные операции с двоичными числами, длиной не менее 7 знаков:
>>> ch1=64; ch2=65 #1000000 и 1000001 в двоичной
>>> ch3=~ch1
>>> bin(ch3)
'-0b1000001'
>>> ch3
-65
>>> ch2&ch1; bin(ch2&ch1)
64
'0b1000000'
>>> ch2|ch1; bin(ch2|ch1)
65
'0b1000001'
>>> ch1^ch2; bin(ch1^ch2)
1
'0b1'
>>> bin(ch1<<2)
'0b100000000'
>>> bin(ch2>>3)
'0b1000'
6. Операции при работе с последовательностями
6.1. Объединение последовательностей (конкатенация)
Некоторые примеры:
>>> 'Система '+'регулирования' #Соединение двух строк символов
'Система регулирования'
>>> ['abc','de','fg']+['hi','jkl'] # Объединение двух списков
['abc', 'de', 'fg', 'hi', 'jkl']
>>> ('abc','de','fg')+('hi','jkl') # Объединение двух кортежей
('abc', 'de', 'fg', 'hi', 'jkl')
6.2. Повторение
Некоторые примеры:
>>> 'ля-'*5 #Повторение строки 5 раз
'ля-ля-ля-ля-ля-'
>>> ['ку','-']*3 #Повторение списка 3 раза
['ку', '-', 'ку', '-', 'ку', '-']
>>> ('кис','-')*4 #Повторение кортежа 4 раза
('кис', '-', 'кис', '-', 'кис', '-', 'кис', '-')
>>> signal1=[0]*3+[1]*99 #Создание списка со 100 отсчетами сигнала-ступеньки
>>> signal1
[0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
>>> signal2=(0,)*3+(1,)*5+(0,)*7 #Создание кортежа с отсчетами сигнала – импульса
>>> signal2
(0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0)
6.3. Проверка наличия заданного элемента в последовательности
Некоторые примеры:
>>> stroka='Система автоматического управления'
>>> 'автомат' in stroka #Наличие подстроки в строке
True
>>> 'ку' in ['ку','-']*3 #Наличие контекста в списке
True
>>> 'ля-' in ('abc', 'de', 'fg', 'hi', 'jkl') #Наличие контекста в кортеже
False
6.4. Подстановка значений в строку с помощью оператора «%»
Пример 1:
>>> stroka='Температура = %g %s %g'
>>> stroka
'Температура = %g %s %g'
>>> stroka % (16,' меньше ',25)
'Температура = 16 меньше 25'
Пример 2. Вставка с использованием данных из словаря.
>>> stroka='Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka
'Температура = %(zn1)g %(sravn)s %(zn2)g'
>>> stroka % {'zn1':16,'sravn':' меньше ','zn2':25}
'Температура = 16 меньше 25'
7. Оператор присваивания
7.1 Обычное присваивание значения переменной (=)
Пример:
>>> zz=-12
>>> zz
-12
7.2 Увеличение или уменьшение значения переменной на заданную величину
Примеры:
>>> zz+=5 # Значение zz увеличивается на 5
>>> zz
-7
>>> zz-=3 # Значение уменьшается на 3
>>> zz
-10
Для последовательностей операция (+=) означает конкатенацию текущего значения объекта с заданным дополнением.
>>> stroka='Система'
>>> stroka+=' регулирования'
>>> stroka
'Система регулирования'
7.3. Умножение или деление текущего значения переменной на заданную величину
Примеры:
>>> zz/=2
>>> zz
-5.0
>>> zz*=5
>>> zz
-25.0
Для строк операция (*=) означает повторение текущего значения объекта заданное число раз.
>>> stroka='Я рыба'
>>> stroka*=16
>>> stroka
'Я рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыбаЯ рыба'
7.4. Операции деления с округлением вниз (//=), получения остатка от деления (%=) и возведения в степень(**=)
Примеры:
>>> x = 17
>>> x //= 3
>>> x
5
>>> a = 17
>>> a %= 3
>>> a
2
>>> p = 2
>>> p **= 8
>>> p
256
7.5. Множественное присваивание
Некоторые примеры:
>>> w=v=10 # Переменным присваивается одно и то же значение
>>> w,v
(10, 10)
>>> n1,n2,n3=(11,-3,'all') #Значения переменных берутся из кортежа
>>> n1,n2,n3
(11, -3, 'all')
Проверим, можно ли вместо кортежа справа использовать строку, список, словарь, множество.
>>> m1,m2,m3='abc'
>>> m1,m2,m3
('a', 'b', 'c')
>>> o1,o2,o3=[11, -3, 'all']
>>> o1,o2,o3
(11, -3, 'all')
>>> p1,p2,p3={1:'mean',2:'standart deviation',3:'correlation'}
>>> p1,p2,p3
(1, 2, 3)
>>> r1,r2,r3={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
Traceback (most recent call last):
File "<pyshell#197>", line 1, in <module>
r1,r2,r3={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
ValueError: too many values to unpack (expected 3)
>>> r1,r2,r3={'двигатель','датчик','линия связи'}
>>> r1,r2,r3
('линия связи', 'датчик', 'двигатель')
Использовать можно всё из перечисленного, но множество стоит ограничить по размеру до того количества элементов, скольким переменным мы присваеваем значения.
8. Логические операции
8.1. Операции сравнения
Некоторые примеры:
>>> 14>7
True
>>> 15==-15
False
>>> 16<=0
False
>>> 16<7
False
>>> 4!=0
True
>>> 8954>=8954.999
False
Сравним ранее введённые переменные w и v:
>>> w==v
True
>>> w!=v
False
>>> w<v
False
>>> w>v
False
>>> w<=v
True
>>> w>=v
True
8.2. Проверка наличия заданного элемента в последовательности или во множестве
Операции с множеством:
>>> mnoz1={'pen','book','pen','iPhone','table','book'}
>>> 'book' in mnoz1
True
>>> 'cap' in mnoz1
False
Операции со словарем:
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
>>> 'Vologda' in dic1
True
>>> 'Pskov' in dic1
False
>>> 56 in dic1.values()
True
Ещё пример работы со словарем:
>>> dct1={'Institut':['AVTI','IEE','IBB'],'Depart':['UII','PM','VMSS','MM'],'gruppa': ['A-01-15','A-02-15']}
>>> 'UII' in dct1['Depart']
True
>>> dct1['Depart'][1] == 'MM'
False
8.3. Создание больших логических выражений с использованием соединительных слов
Пример:
>>> a=17
>>> b=-6
>>> (a>=b) and ('book' in mnoz1) and not ('Pskov' in dic1)
True
Ещё 2 примера сложных логических выражений:
>>> (not (v==w) or ('flash-card' in mnoz1)) and Saratov in dic1
False
>>> (a + b != 11) and Kishinev in dic1
False
8.4. Проверка ссылок переменных на один и тот же объект
Примеры:
>>> w=v=10 #При таком присваивании переменные ссылаются на один и тот же объект в оперативной памяти
>>> w is v
True
>>> w1=['A','B']
>>> v1=['A','B']
>>> w1 is v1
False
В данном случае w1 и v1 ссылаются на два разных объекта в памяти.
9. Операции с объектами, выполняемые с помощью методов.
Полный список всех атрибутов любого объекта можно получить с использованием функции dir, например:
>>> stroka='Микропроцессорная система управления'
>>>dir(stroka)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
9.1. Методы для работы со строками
Рассмотрим несколько примеров таких методов:
>>> stroka.find('пр') #Возвращает номер позиции первого вхождения указанного контекста или значение -1
5
>>> stroka.count("с") #Подсчет числа вхождений строки “с” в stroka
4
>>> stroka.replace(' у',' автоматического у')
'Микропроцессорная система автоматического управления'
>>> spis22=stroka.split(' ') #Возвращает список подстрок, между которыми в строке стоит заданный разделитель
>>> spis22
['Микропроцессорная', 'система', 'управления']
>>> stroka.upper() #Возвращает строку со всеми заглавными буквами
'МИКРОПРОЦЕССОРНАЯ СИСТЕМА УПРАВЛЕНИЯ'
>>> stroka3=" ".join(spis22) #Возвращает строку, собранную из элементов списка
>>> stroka3
'Микропроцессорная система управления'
>>> stroka3.partition("с") #Возвращает кортеж с результатами поиска «с» слева
('Микропроце', 'с', 'сорная система управления')
>>> stroka3.rpartition("с") #Возвращает кортеж с результатами поиска «с» справа
('Микропроцессорная си', 'с', 'тема управления')
Выведем справку по методу format:
>>> help(format)
Help on built-in function format in module builtins:
format(value, format_spec='', /)
Return value.__format__(format_spec)
format_spec defaults to the empty string.
See the Format Specification Mini-Language section of help('FORMATTING') for
details.
Форматирование строки осуществляется в случае, если необходимо в символьную строку подставить значения некоторых объектов, например, полученных в ходе выполнения программы. Часто такую строку затем используют для вывода результатов работы программы на экран или в файл протокола.
Например:
>>> strk1='Момент времени {}, значение = {}'
>>> strk1
'Момент времени {}, значение = {}'
>>> strk1.format(1,89.7)
'Момент времени 1, значение = 89.7'
>>> strk2='Момент времени {1}, значение = {0}:{2}'
>>> strk2.format(36.7,2,'норма!')
'Момент времени 2, значение = 36.7:норма!'
>>> strk3='Момент времени {num}, значение = {znch}'
>>> strk3.format(znch=89.7,num=2)
'Момент времени 2, значение = 89.7'
9.2. Методы для работы со списками
Примеры использования методов:
>>> spsk = ['Я', 'рыба', 222, strk2, '11']
>>> dir(spsk)
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> spsk.pop(2) #Показывает элемент с индексом 2 и удаляет его
222
>>> spsk.append('c') #Добавляет в конец списка 'c'
>>> spsk
['Я', 'рыба', 'Момент времени {1}, значение = {0}:{2}', '11', 'c']
>>> spsk.insert(2,'a') #На место с индексом 2 ставит элемент 'a'
>>> spsk
['Я', 'рыба', 'a', 'Момент времени {1}, значение = {0}:{2}', '11', 'c']
>>> spsk.count('a') #Считает кол-во элементов 'a' в списке
1
9.3. Методы для работы с кортежами
>>> my_tuple = (10, 20, 30, 20, 40, 50, 20, 'hello', 3.14)
>>> my_tuple.count(20)
3
>>> my_tuple.index(20)
1
У кортежа всего 2 метода: index - ищет индекс первого вхождения элемента, count - считает кол-во вхождений этого элемента.
9.4. Методы для работы со словарями и множествами
Методы работы со словарями:
>>> my_dict = {'name': 'Yura','age': 19,'city': 'Shelkovo','country': 'Russia','hobby': 'gaming'}
>>> my_dict.keys() #Получить все ключи
dict_keys(['name', 'age', 'city', 'country', 'hobby'])
>>> my_dict.values() #Получить все значения
dict_values(['Yura', 19, 'Shelkovo', 'Russia', 'gaming'])
>>> my_dict.items() #Получить пары ключ-значение
dict_items([('name', 'Yura'), ('age', 19), ('city', 'Shelkovo'), ('country', 'Russia'), ('hobby', 'gaming')])
>>> my_dict.get('name') #Безопасное получение значения
'Yura'
>>> my_dict.pop('city') #Удалить элемент и вернуть его значение
'Shelkovo'
>>> my_dict.popitem() #Удалить и вернуть последнюю пару
('hobby', 'gaming')
>>> my_dict.update({'age': 20, 'language': 'Python'}) #Обновить словарь
>>> my_dict
{'name': 'Yura', 'age': 20, 'country': 'Russia', 'language': 'Python'}
>>> skill = my_dict.setdefault('skill', 'Beginner') #Получить значение или установить по умолчанию
>>> my_dict
{'name': 'Yura', 'age': 20, 'country': 'Russia', 'language': 'Python', 'skill': 'Beginner'}
>>> age = my_dict.setdefault('age', 30)
>>> my_dict
{'name': 'Yura', 'age': 20, 'country': 'Russia', 'language': 'Python', 'skill': 'Beginner'}
>>> my_dict.clear() #Очистить словарь
>>> my_dict
{}
>>> my_dict = {'a': 1, 'b': 2}
>>> dict_copy = my_dict.copy() #Создать копию словаря
>>> dict_copy
{'a': 1, 'b': 2}
Методы работы с множествами:
>>> my_set = {1, 2, 3, 4, 5, 6}
>>> my_set.add(7) #Добавить элемент
>>> my_set
{1, 2, 3, 4, 5, 6, 7}
>>> my_set.remove(3) #Удалить элемент (м.б. с ошибкой)
>>> my_set
{1, 2, 4, 5, 6, 7}
>>> my_set.discard(10) #Удалить элемент без ошибки
>>> my_set
{1, 2, 4, 5, 6, 7}
>>> my_set.pop() #Удалить и вернуть случайный элемент
1
>>> my_set
{2, 4, 5, 6, 7}
>>> my_set.clear() #Очистить множество
>>> my_set
set()
>>> my_set = {1, 2, 3} #Создать копию
>>> set_copy = my_set.copy()
>>> set_copy
{1, 2, 3}
#Рассмотрим операции с двумя множествами
>>> set_a = {1, 2, 3, 4, 5}
>>> set_b = {4, 5, 6, 7, 8}
>>> set_a.union(set_b) #Объединение
{1, 2, 3, 4, 5, 6, 7, 8}
>>> set_a.intersection(set_b) #Пересечение
{4, 5}
>>> set_a.difference(set_b) #Разность
{1, 2, 3}
>>> set_a.symmetric_difference(set_b) #Симметричная разность
{1, 2, 3, 6, 7, 8}
>>> {1, 2}.issubset(set_a) #Проверочные методы
True
>>> set_a.issuperset({1, 2})
True
>>> set_a.isdisjoint({9, 10})
True