FilippovDY (FilippovDY) 1 месяц назад
Родитель 0c688d9741
Сommit 4e8e8a476f

@ -3,21 +3,25 @@
Филиппов Даниил Юрьевич, А-01-23 Филиппов Даниил Юрьевич, А-01-23
# 1. Запуск оболочки IDLE и установка рабочего каталога # 1. Запуск оболочки IDLE и установка рабочего каталога
```py
>>> import os >>> import os
>>> os.chdir('C:\\Users\\danii\\Desktop\\FilippovDY\\python-labs\\TEMA2\\') >>> os.chdir('C:\\Users\\danii\\Desktop\\FilippovDY\\python-labs\\TEMA2\\')
```
# 2. Изучение простых объектов. Операции присваивания значения объектам-переменным # 2. Изучение простых объектов. Операции присваивания значения объектам-переменным
Операция присваивания Операция присваивания
```py
>>> f1=16; f2=3 >>> f1=16; f2=3
```
Какое значение имеет переменная: Какое значение имеет переменная:
```py
>>> f1,f2 >>> f1,f2
(16, 3) (16, 3)
>>> f1;f2 >>> f1;f2
16 16
3 3
```
Какие объекты существуют в данный момент в среде: Какие объекты существуют в данный момент в среде:
```py ```py
@ -26,21 +30,23 @@
``` ```
Получение списка атрибутов любого объекта, например f1: Получение списка атрибутов любого объекта, например f1:
```py
>>> dir(f1) >>> dir(f1)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes'] ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes']
```
Определение классовой принадлежности объекта Определение классовой принадлежности объекта
```py
>>> type(f2) >>> type(f2)
<class 'int'> <class 'int'>
```
Удаление объекта из оперативной памяти: Удаление объекта из оперативной памяти:
```py
>>> del f1,f2 >>> del f1,f2
>>> dir() >>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os'] ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'os']
```
# 3. Правила именования объектов # 3. Правила именования объектов
Правила именования: Правила именования:
@ -48,103 +54,114 @@
имена должны начинаться с латинской буквы (иногда могут начинаться с символа подчеркивания, но это – особый вид переменных); имена должны начинаться с латинской буквы (иногда могут начинаться с символа подчеркивания, но это – особый вид переменных);
имена не должны совпадать с ключевыми словами и встроенными идентификаторами языка Python; имена не должны совпадать с ключевыми словами и встроенными идентификаторами языка Python;
большие и малые буквы в именах различаются (имена – чувствительные к регистру)! большие и малые буквы в именах различаются (имена – чувствительные к регистру)!
```py
>>> gg1=1.6 #значение в виде вещественного числа >>> gg1=1.6 #значение в виде вещественного числа
>>> hh1='Строка' #значение в виде символьной строки >>> hh1='Строка' #значение в виде символьной строки
>>> 73sr=3 #неправильное имя – начинается с цифры - будет диагностика! >>> 73sr=3 #неправильное имя – начинается с цифры - будет диагностика!
SyntaxError: invalid decimal literal SyntaxError: invalid decimal literal
>>> and=7 #недопустимое имя – совпадает с ключевым словом - будет диагностика! >>> and=7 #недопустимое имя – совпадает с ключевым словом - будет диагностика!
SyntaxError: invalid syntax SyntaxError: invalid syntax
```
# 4. Вывод списка ключевых слов # 4. Вывод списка ключевых слов
```py
>>> import keyword >>> import keyword
>>> keyword.kwlist >>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```py
>>> s=keyword.kwlist #Сохранение списка в переменной s >>> s=keyword.kwlist #Сохранение списка в переменной s
>>> s >>> s
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
```
# 5. Вывод списка встроенных идентификаторов # 5. Вывод списка встроенных идентификаторов
```py
>>> import builtins >>> import builtins
>>> dir(builtins) >>> dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip'] ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'PythonFinalizationError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '_IncompleteInputError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
```
# 5.1 Изучение назначения функций: abs, len, max, min, pow, round, sorted, sum, zip # 5.1 Изучение назначения функций: abs, len, max, min, pow, round, sorted, sum, zip
Взятие модуля: Взятие модуля:
```py
>>> abs(-6) >>> abs(-6)
6 6
```
Длина списка: Длина списка:
```py
>>> len([1, 2, 3]) >>> len([1, 2, 3])
3 3
```
Выбор максимального и минимального значения: Выбор максимального и минимального значения:
```py
>>> max(5, 15) >>> max(5, 15)
15 15
>>> min (15, 12) >>> min (15, 12)
12 12
```
Возведение в степень: Возведение в степень:
```py
>>> pow (5, 2) >>> pow (5, 2)
25 25
```
Округление до целого: Округление до целого:
```py
>>> round (3,1514) >>> round (3,1514)
3 3
```
Сортировка по возрастанию (можно применить reverse = True для сортировки по убыванию): Сортировка по возрастанию (можно применить reverse = True для сортировки по убыванию):
```py
>>> sorted ([1,2,8,-5,3]) >>> sorted ([1,2,8,-5,3])
[-5, 1, 2, 3, 8] [-5, 1, 2, 3, 8]
>>> sorted ([1,2,8,-5,3], reverse=True) >>> sorted ([1,2,8,-5,3], reverse=True)
[8, 3, 2, 1, -5] [8, 3, 2, 1, -5]
```
Суммирование: Суммирование:
```py
>>> sum ([7, 3, 5]) >>> sum ([7, 3, 5])
15 15
```
Объединение объектов в кортеж (возвращается указатель на участок памяти): Объединение объектов в кортеж (возвращается указатель на участок памяти):
```py
>>> list1=[1,2,5] >>> list1=[1,2,5]
>>> list1 >>> list1
[1, 2, 5] [1, 2, 5]
>>> list2=[5,6,10] >>> list2=[5,6,10]
>>> zip(list1,list2) >>> zip(list1,list2)
<zip object at 0x000002A0E60631C0> <zip object at 0x000002A0E60631C0>
```
# 6. Большие и малые буквы в именах объекта # 6. Большие и малые буквы в именах объекта
```py
>>> Gg1=45 >>> Gg1=45
>>> gg1 >>> gg1
1.6 1.6
>>> Gg1 >>> Gg1
45 45
```
# 7. изучение базовых типов объектов # 7. изучение базовых типов объектов
## 7.1 Логический тип ## 7.1 Логический тип
```py
>>> bb1=True; bb2=False >>> bb1=True; bb2=False
>>> bb1,bb2 >>> bb1,bb2
(True, False) (True, False)
>>> type(bb1) >>> type(bb1)
<class 'bool'> <class 'bool'>
```
## 7.2 Другие простые типы ## 7.2 Другие простые типы
```py
>>> ii1=-1234567890 >>> ii1=-1234567890
>>> ii1 >>> ii1
-1234567890 -1234567890
@ -159,37 +176,42 @@
>>> cc2=complex(a,b) #Создается комплексное число >>> cc2=complex(a,b) #Создается комплексное число
>>> cc2 >>> cc2
(3.67-0.45j) (3.67-0.45j)
```
## 7.3 Строка символов ## 7.3 Строка символов
```py
>>>ss1='Это - строка символов' >>>ss1='Это - строка символов'
>>>ss1 >>>ss1
'Это - строка символов' 'Это - строка символов'
```
Строки можно записать и в двойные кавычки Строки можно записать и в двойные кавычки
```py
>>>ss1="Это - строка символов" >>>ss1="Это - строка символов"
>>>ss1 >>>ss1
'Это - строка символов' 'Это - строка символов'
```
Внутри строк можно использовать экранированные последовательности, начинающиеся со знака \ Внутри строк можно использовать экранированные последовательности, начинающиеся со знака \
```py
>>>ss1a="Это - \" строка символов \", \n \t выводимая на двух строках" >>>ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
>>>print(ss1a) >>>print(ss1a)
Это - " строка символов ", Это - " строка символов ",
выводимая на двух строках выводимая на двух строках
```
Создание строки по шаблону: Создание строки по шаблону:
```py
>>>ss1b= 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>' >>>ss1b= 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>'
>>>print(ss1b) >>>print(ss1b)
Меня зовут: Меня зовут:
<сюда вставьте свою фамилию и инициалы> <сюда вставьте свою фамилию и инициалы>
>>>ss1b >>>ss1b
'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>' 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>'
```
Многострочные строки можно задавать в виде объекта с использованием тройных кавычек: Многострочные строки можно задавать в виде объекта с использованием тройных кавычек:
```py
>>>mnogo="""Нетрудно заметить , что в результате операции >>>mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число, над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.""" имеющее более сложный тип из тех, которые участвуют в операции."""
@ -197,9 +219,10 @@
Нетрудно заметить , что в результате операции Нетрудно заметить , что в результате операции
над числами разных типов получается число, над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции. имеющее более сложный тип из тех, которые участвуют в операции.
```
Обращение к частям строки символов с использованием индексов символов по их порядку в строке. Нумерация символов начинается с 0. Обращение к частям строки символов с использованием индексов символов по их порядку в строке. Нумерация символов начинается с 0.
```py
>>> ss1[0] #Это – символ «Э» >>> ss1[0] #Это – символ «Э»
'Э' 'Э'
>>> ss1[8] #Это – символ «р» >>> ss1[8] #Это – символ «р»
@ -216,47 +239,52 @@
' строка ' ' строка '
>>> ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2 >>> ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2
' тоасм' ' тоасм'
```
Указываемая правая граница в срез не включается, при отрицательном значении шага получается следующее Указываемая правая граница в срез не включается, при отрицательном значении шага получается следующее
```py
>>> ss1[17:3:-2] >>> ss1[17:3:-2]
'омсаот ' 'омсаот '
>>> ss1[-4:3:-2] >>> ss1[-4:3:-2]
'омсаот ' 'омсаот '
>>> ss1 >>> ss1
'Это - строка символов' 'Это - строка символов'
```
Строка является неизменяемым объектом Строка является неизменяемым объектом
```py
>>> ss1[4]='=' # Будет диагностика! >>> ss1[4]='=' # Будет диагностика!
TypeError: 'str' object does not support item assignment TypeError: 'str' object does not support item assignment
```
Однако, можно переопределить строку Однако, можно переопределить строку
```py
>>> ss1=ss1[:4]+'='+ss1[5:] >>> ss1=ss1[:4]+'='+ss1[5:]
>>> ss1 >>> ss1
'Это = строка символов' 'Это = строка символов'
```
Создание объекта с разными срезами исходной строки Создание объекта с разными срезами исходной строки
```py
>>>ss1b_1=ss1b[::-1] >>>ss1b_1=ss1b[::-1]
>>>print(ss1b_1) >>>print(ss1b_1)
>ылаицини и юилимаф юовс етьватсв адюс< >ылаицини и юилимаф юовс етьватсв адюс<
:тувоз янеМ :тувоз янеМ
```
Создание объектов разных типов Создание объектов разных типов
```py
>>> type(number1) >>> type(number1)
<class 'int'> <class 'int'>
>>> number2='Число' >>> number2='Число'
>>> type(number2) >>> type(number2)
<class 'str'> <class 'str'>
```
# 8. Изучение более сложных типов объектов # 8. Изучение более сложных типов объектов
## 8.1 Список ## 8.1 Список
Список – это последовательность: упорядоченная по местоположению коллекция объектов произвольных типов, размер которых практически не ограничен. В отличие от символьных строк, списки являются изменяемыми последовательностями, т.е. их элементы могут изменяться с помощью операций присваивания. Список – это последовательность: упорядоченная по местоположению коллекция объектов произвольных типов, размер которых практически не ограничен. В отличие от символьных строк, списки являются изменяемыми последовательностями, т.е. их элементы могут изменяться с помощью операций присваивания.
```py
>>> spis1=[111,'Spisok',5-9j] #Список с тремя элементами рахных типов >>> spis1=[111,'Spisok',5-9j] #Список с тремя элементами рахных типов
>>> spis1 >>> spis1
[111, 'Spisok', (5-9j)] [111, 'Spisok', (5-9j)]
@ -264,9 +292,10 @@
>>> spis=[1,2,3,4, >>> spis=[1,2,3,4,
... 5,6,7, ... 5,6,7,
... 8,9,10] #Список можно вводить на нескольких строках ... 8,9,10] #Список можно вводить на нескольких строках
```
Можно использовать индексы точно также, как и сэлементами символьной строки Можно использовать индексы точно также, как и сэлементами символьной строки
```py
>>> spis1[-1] >>> spis1[-1]
(5-9j) (5-9j)
>>> stup[-8::2] >>> stup[-8::2]
@ -274,14 +303,16 @@
>>> spis1[1]='Список' >>> spis1[1]='Список'
>>> spis1 >>> spis1
[111, 'Список', (5-9j)] [111, 'Список', (5-9j)]
```
Текущее число элементов Текущее число элементов
```py
>>> len(spis1) >>> len(spis1)
3 3
```
С помощью методов объектов-списков можно добавлять и удалять элементы: С помощью методов объектов-списков можно добавлять и удалять элементы:
```py
>>> help(spis1.append) >>> help(spis1.append)
Help on built-in function append: Help on built-in function append:
append(object, /) method of builtins.list instance append(object, /) method of builtins.list instance
@ -289,53 +320,61 @@
>>> spis1.append('New item') # В конец списка добавлен элемент «New item» >>> spis1.append('New item') # В конец списка добавлен элемент «New item»
>>> spis1 >>> spis1
[111, 'Список', (5-9j), 'New item'] [111, 'Список', (5-9j), 'New item']
```
Или по-другому конкатенация (в этой инструкции список отображается, но не сохраняется): Или по-другому конкатенация (в этой инструкции список отображается, но не сохраняется):
```py
>>> spis1+['New item'] >>> spis1+['New item']
[111, 'Список', (5-9j), 'New item', 'New item'] [111, 'Список', (5-9j), 'New item', 'New item']
```
Добавление в конец списка spis1 строку ss1b: Добавление в конец списка spis1 строку ss1b:
```py
>>> spis1.append(ss1b) >>> spis1.append(ss1b)
>>> spis1 >>> spis1
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>'] [111, 'Список', (5-9j), 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>']
>>> spis1 += ss1b >>> spis1 += ss1b
>>> spis1 >>> spis1
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', '<', 'с', 'ю', 'д', 'а', ' ', 'в', 'с', 'т', 'а', 'в', 'ь', 'т', 'е', ' ', 'с', 'в', 'о', 'ю', ' ', 'ф', 'а', 'м', 'и', 'л', 'и', 'ю', ' ', 'и', ' ', 'и', 'н', 'и', 'ц', 'и', 'а', 'л', 'ы', '>'] [111, 'Список', (5-9j), 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', '<', 'с', 'ю', 'д', 'а', ' ', 'в', 'с', 'т', 'а', 'в', 'ь', 'т', 'е', ' ', 'с', 'в', 'о', 'ю', ' ', 'ф', 'а', 'м', 'и', 'л', 'и', 'ю', ' ', 'и', ' ', 'и', 'н', 'и', 'ц', 'и', 'а', 'л', 'ы', '>']
```
Удаление элемента из списка: Удаление элемента из списка:
```py
>>> spis1.pop(1) #Из списка удален элемент с индексом 1 >>> spis1.pop(1) #Из списка удален элемент с индексом 1
'Список' 'Список'
```
Вставка элемента в определенное место по индексу: Вставка элемента в определенное место по индексу:
```py
>>> spis1.insert(1, "hello") >>> spis1.insert(1, "hello")
>>> spis1 >>> spis1
[111, 'hello', (5-9j), 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', '<', 'с', 'ю', 'д', 'а', ' ', 'в', 'с', 'т', 'а', 'в', 'ь', 'т', 'е', ' ', 'с', 'в', 'о', 'ю', ' ', 'ф', 'а', 'м', 'и', 'л', 'и', 'ю', ' ', 'и', ' ', 'и', 'н', 'и', 'ц', 'и', 'а', 'л', 'ы', '>'] [111, 'hello', (5-9j), 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', '<', 'с', 'ю', 'д', 'а', ' ', 'в', 'с', 'т', 'а', 'в', 'ь', 'т', 'е', ' ', 'с', 'в', 'о', 'ю', ' ', 'ф', 'а', 'м', 'и', 'л', 'и', 'ю', ' ', 'и', ' ', 'и', 'н', 'и', 'ц', 'и', 'а', 'л', 'ы', '>']
```
Удаление элемента по значению: Удаление элемента по значению:
```py
>>> spis1.remove(5-9j) >>> spis1.remove(5-9j)
>>> spis1 >>> spis1
['hello', 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', '<', 'с', 'ю', 'д', 'а', ' ', 'в', 'с', 'т', 'а', 'в', 'ь', 'т', 'е', ' ', 'с', 'в', 'о', 'ю', ' ', 'ф', 'а', 'м', 'и', 'л', 'и', 'ю', ' ', 'и', ' ', 'и', 'н', 'и', 'ц', 'и', 'а', 'л', 'ы', '>'] ['hello', 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', '<', 'с', 'ю', 'д', 'а', ' ', 'в', 'с', 'т', 'а', 'в', 'ь', 'т', 'е', ' ', 'с', 'в', 'о', 'ю', ' ', 'ф', 'а', 'м', 'и', 'л', 'и', 'ю', ' ', 'и', ' ', 'и', 'н', 'и', 'ц', 'и', 'а', 'л', 'ы', '>']
```
Добавление элементов объекта в конец другого объекта: Добавление элементов объекта в конец другого объекта:
```py
>>> spis2=['hello', 255, 5-10j] >>> spis2=['hello', 255, 5-10j]
>>> spis1.extend(spis2) >>> spis1.extend(spis2)
>>> spis1 >>> spis1
['hello', 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', '<', 'с', 'ю', 'д', 'а', ' ', 'в', 'с', 'т', 'а', 'в', 'ь', 'т', 'е', ' ', 'с', 'в', 'о', 'ю', ' ', 'ф', 'а', 'м', 'и', 'л', 'и', 'ю', ' ', 'и', ' ', 'и', 'н', 'и', 'ц', 'и', 'а', 'л', 'ы', '>', 'hello', 255, (5-10j)] ['hello', 'New item', 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', '<', 'с', 'ю', 'д', 'а', ' ', 'в', 'с', 'т', 'а', 'в', 'ь', 'т', 'е', ' ', 'с', 'в', 'о', 'ю', ' ', 'ф', 'а', 'м', 'и', 'л', 'и', 'ю', ' ', 'и', ' ', 'и', 'н', 'и', 'ц', 'и', 'а', 'л', 'ы', '>', 'hello', 255, (5-10j)]
```
Полное очищение списка: Полное очищение списка:
```py
>>> spis1.clear() >>> spis1.clear()
>>> spis1 >>> spis1
[] []
```
Сортировка списка без создания нового объекта: Сортировка списка без создания нового объекта:
```py
>>> spis3=[4,-3,5,-7,10] >>> spis3=[4,-3,5,-7,10]
>>> spis3.sort(key=abs, reverse=False) >>> spis3.sort(key=abs, reverse=False)
>>> spis3 >>> spis3
@ -343,149 +382,167 @@
>>> spis3.sort(key=abs, reverse=True) >>> spis3.sort(key=abs, reverse=True)
>>> spis3 >>> spis3
[10, -7, 5, 4, -3] [10, -7, 5, 4, -3]
```
Создание копии списка: Создание копии списка:
```py
>>> spis4=spis3.copy() >>> spis4=spis3.copy()
>>> spis4 >>> spis4
[10, -7, 5, 4, -3] [10, -7, 5, 4, -3]
```
Подсчет количества элементов по значению: Подсчет количества элементов по значению:
```py
>>> spis4.count(-7) >>> spis4.count(-7)
1 1
```
Поиск индекса по значению: Поиск индекса по значению:
```py
>>> spis4.index(5) >>> spis4.index(5)
2 2
```
Списки могут быть вложенными Списки могут быть вложенными
```py
>>> spis1 >>> spis1
[10, -7, 5, 4, -3] [10, -7, 5, 4, -3]
>>> spis2=[spis1,[4,5,6,7]] #здесь элементами являются два списка >>> spis2=[spis1,[4,5,6,7]] #здесь элементами являются два списка
>>> spis2 >>> spis2
[[10, -7, 5, 4, -3], [4, 5, 6, 7]] [[10, -7, 5, 4, -3], [4, 5, 6, 7]]
```
Обращение к элементам вложенного списка: Обращение к элементам вложенного списка:
```py
>>> spis2[0][1] #обращение к элементу списка spis1 >>> spis2[0][1] #обращение к элементу списка spis1
-7 -7
```
Изменение элемента вложенного списка: Изменение элемента вложенного списка:
```py
>>> spis2[0][1]=78 >>> spis2[0][1]=78
>>> spis2 >>> spis2
[[10, 78, 5, 4, -3], [4, 5, 6, 7]] [[10, 78, 5, 4, -3], [4, 5, 6, 7]]
```
Создание объекта-списка, элементами которого будут объекты разных типов Создание объекта-списка, элементами которого будут объекты разных типов
```py
>>> spis5 = [100, 'Test', True, spis1] >>> spis5 = [100, 'Test', True, spis1]
>>> spis5 >>> spis5
[100, 'Test', True, [10, 78, 5, 4, -3]] [100, 'Test', True, [10, 78, 5, 4, -3]]
```
## 8.2 Кортежи ## 8.2 Кортежи
Объект-кортеж похож на список, но его нельзя изменить – кортежи являются последовательностями, как списки, но они являются неизменяемыми, как строки. В отличие от списка литерал кортежа заключается в круглые, а не в квадратные скобки. Кортежи также поддерживают включение в них объектов различных типов и операции, типичные для последовательностей. Объект-кортеж похож на список, но его нельзя изменить – кортежи являются последовательностями, как списки, но они являются неизменяемыми, как строки. В отличие от списка литерал кортежа заключается в круглые, а не в квадратные скобки. Кортежи также поддерживают включение в них объектов различных типов и операции, типичные для последовательностей.
Создание кортежа: Создание кортежа:
```py
>>> kort1=(222,'Kortezh',77+8j) >>> kort1=(222,'Kortezh',77+8j)
```
Кортеж нельзя изменить, но можно переопределить Кортеж нельзя изменить, но можно переопределить
```py
>>> kort1= kort1+(1,2) >>> kort1= kort1+(1,2)
>>> kort1 >>> kort1
(222, 'Kortezh', (77+8j), 1, 2) (222, 'Kortezh', (77+8j), 1, 2)
>>> kort1= kort1+(ss1b,) >>> kort1= kort1+(ss1b,)
>>> kort1 >>> kort1
(222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>') (222, 'Kortezh', (77+8j), 1, 2, 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>')
```
Переопределение кортежа с удалением комплексного элемента: Переопределение кортежа с удалением комплексного элемента:
```py
>>> kort2=kort1[:2]+kort1[3:] >>> kort2=kort1[:2]+kort1[3:]
>>> kort2 >>> kort2
(222, 'Kortezh', 1, 2, 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>') (222, 'Kortezh', 1, 2, 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>')
```
Определение индекса заданного элемента: Определение индекса заданного элемента:
```py
>>> kort1.index(2) # Будет получено значение 4 >>> kort1.index(2) # Будет получено значение 4
4 4
```
Подсчёт числа вхождений заданного элемента: Подсчёт числа вхождений заданного элемента:
```py
>>> kort1.count(222) #Будет получено значение 1 >>> kort1.count(222) #Будет получено значение 1
1 1
```
Операция замены элемента в кортеже: Операция замены элемента в кортеже:
```py
>>> kort1[2]=90 #Будет получена диагностика о невозможности изменения кортежа >>> kort1[2]=90 #Будет получена диагностика о невозможности изменения кортежа
TypeError: 'tuple' object does not support item assignment TypeError: 'tuple' object does not support item assignment
```
Создание объекта-кортежа с элементами разных типов: Создание объекта-кортежа с элементами разных типов:
```py
>>> kort3 = ("h","True", 54) >>> kort3 = ("h","True", 54)
>>> kort3 >>> kort3
('h', 'True', 54) ('h', 'True', 54)
```
## 8.3 Словарь ## 8.3 Словарь
Объект-словарь похож на ассоциативные массивы в других языках программирования. Его содержанием является совокупность пар: «ключ (key)»:«значение (value)». В качестве ключей могут использоваться неизменяемые типы объектов. Значениями могут быть объекты любого типа. Ссылка на ключ обеспечивает быстрый доступ к связанному с ним значению. В отличие от списков и кортежей совокупность элементов словаря не является упорядоченной (последовательностью). Его элементы могут изменяться с помощью операции присваивания значений. Объект-словарь похож на ассоциативные массивы в других языках программирования. Его содержанием является совокупность пар: «ключ (key)»:«значение (value)». В качестве ключей могут использоваться неизменяемые типы объектов. Значениями могут быть объекты любого типа. Ссылка на ключ обеспечивает быстрый доступ к связанному с ним значению. В отличие от списков и кортежей совокупность элементов словаря не является упорядоченной (последовательностью). Его элементы могут изменяться с помощью операции присваивания значений.
Создание словаря: Создание словаря:
```py
>>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45} >>> dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
```
Обращение к элементам словаря (не по индексам, а по ключам): Обращение к элементам словаря (не по индексам, а по ключам):
```py
>>> dic1['Orel'] >>> dic1['Orel']
56 56
```
Пополнение словаря: Пополнение словаря:
```py
>>> dic1['Pskov']=78 >>> dic1['Pskov']=78
>>> dic1 >>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78} {'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
```
В силу неупорядоченности словаря при его выводе элементы могут располагаться не в том порядке, в каком они задавались при его формировании. -В силу неупорядоченности словаря при его выводе элементы могут располагаться не в том порядке, в каком они задавались при его формировании.
Для того, чтобы получить перечень ключей или значений из словаря следует использовать методы keys или values, создающие списки, соответственно, ключей или значений из словаря. Для того, чтобы получить перечень ключей или значений из словаря следует использовать методы keys или values, создающие списки, соответственно, ключей или значений из словаря.
Упорядочение списка по ключам или по значениям: Упорядочение списка по ключам или по значениям:
```py
>>> sorted(dic1.keys()) >>> sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda'] ['Orel', 'Pskov', 'Saratov', 'Vologda']
>>> dic1 >>> dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78} {'Saratov': 145, 'Orel': 56, 'Vologda': 45, 'Pskov': 78}
>>> sorted(dic1.values()) >>> sorted(dic1.values())
[45, 56, 78, 145] [45, 56, 78, 145]
```
Элементы словаря, могут быть любого типа, в том числе и словарями: Элементы словаря, могут быть любого типа, в том числе и словарями:
```py
>>> dic2={1:'mean',2:'standart deviation',3:'correlation'} >>> dic2={1:'mean',2:'standart deviation',3:'correlation'}
>>> dic3={'statistics':dic2,'POAS':['base','elementary','programming']} >>> dic3={'statistics':dic2,'POAS':['base','elementary','programming']}
dic3['statistics'][2] dic3['statistics'][2]
```
Создание более сложного словаря из списка с элементами-кортежами: Создание более сложного словаря из списка с элементами-кортежами:
```py
>>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)]) >>> dic4=dict([(1,['A','B','C']),(2,[4,5]),('Q','Prim'),('Stroka',ss1b)])
>>> dic4 >>> dic4
{1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>'} {1: ['A', 'B', 'C'], 2: [4, 5], 'Q': 'Prim', 'Stroka': 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>'}
```
Создание словаря из двух списков (одного для ключей, другой для значений): Создание словаря из двух списков (одного для ключей, другой для значений):
```py
>>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b])) >>> dic5=dict(zip(['A','B','C','Stroka'],[16,-3,9,ss1b]))
>>> dic5 >>> dic5
{'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>'} {'A': 16, 'B': -3, 'C': 9, 'Stroka': 'Меня зовут: \n <сюда вставьте свою фамилию и инициалы>'}
```
Создание объекта-кортежа из 7 элементов и объекта-списка с 5 элементами, создание из них словаря: Создание объекта-кортежа из 7 элементов и объекта-списка с 5 элементами, создание из них словаря:
```py
>>> kort6=('f', 'd', 's', 'a', 'l', 'k', 'j') >>> kort6=('f', 'd', 's', 'a', 'l', 'k', 'j')
>>> spis6=[2,5,6,8,3] >>> spis6=[2,5,6,8,3]
>>> dic6=dict(zip(spis6,kort6)) >>> dic6=dict(zip(spis6,kort6))
>>> dic6 >>> dic6
```
Как мы видим длина словаря составляет 5 объектов. Это связано с функцией zip, которая делает так, что длина итогового объекта будет соответствовать минимальной длине составляющего. Как мы видим длина словаря составляет 5 объектов. Это связано с функцией zip, которая делает так, что длина итогового объекта будет соответствовать минимальной длине составляющего.
@ -493,34 +550,35 @@
Объект-множество – это неупорядоченная совокупность неповторяющихся элементов. Эти элементы могут быть разных, но только неизменяемых типов (числа, строки, кортежи). Объект-множество – это неупорядоченная совокупность неповторяющихся элементов. Эти элементы могут быть разных, но только неизменяемых типов (числа, строки, кортежи).
Создание множества: Создание множества:
```py
>>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} >>> mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
>>> mnoz1 >>> mnoz1
{'двигатель', 'датчик', 'линия связи', 'микропроцессор'} {'двигатель', 'датчик', 'линия связи', 'микропроцессор'}
Повторяющееся элементы были удалены ```
-Повторяющееся элементы были удалены
Определение числа элементов: Определение числа элементов:
```py
>>> len(mnoz1) >>> len(mnoz1)
4 4
```
Проверка наличия элемента во множестве: Проверка наличия элемента во множестве:
```py
>>> 'датчик' in mnoz1 >>> 'датчик' in mnoz1
True True
```
Добавление элемента: Добавление элемента:
```py
>>> mnoz1.add('реле') >>> mnoz1.add('реле')
```
Удаление элемента: Удаление элемента:
```py
>>> mnoz1.remove('линия связи') >>> mnoz1.remove('линия связи')
>>> mnoz1 >>> mnoz1
{'датчик', 'реле', 'микропроцессор', 'двигатель'} {'датчик', 'реле', 'микропроцессор', 'двигатель'}
```
Создание объекта-множества с элементами разных типов и выполнение различных операций с ним: Создание объекта-множества с элементами разных типов и выполнение различных операций с ним:
```py
>>> mnoz2 = {'реле', 20, False} >>> mnoz2 = {'реле', 20, False}
>>> mnoz2.add(60) >>> mnoz2.add(60)
>>> mnoz2 >>> mnoz2
@ -528,6 +586,6 @@
>>> mnoz2.remove(False) >>> mnoz2.remove(False)
>>> mnoz2 >>> mnoz2
{'реле', 20, 60} {'реле', 20, 60}
```
# 9. Завершение работы в среде IDLE. # 9. Завершение работы в среде IDLE.

Загрузка…
Отмена
Сохранить