Пользователь № 7 аудитории Ж-115 1 месяц назад
Родитель eecf8053bd
Сommit c806a81a72

@ -2,195 +2,195 @@
Голощапов Дмитрий, А-01-23 Голощапов Дмитрий, А-01-23
# Пункт 1 Подготовка к началу работы # 1 Подготовка к началу работы
Запуск оболочки IDLE и установка рабочего каталога Запуск оболочки IDLE и установка рабочего каталога
import os >>>import os
os.chdir('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA2') >>>os.chdir('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA2')
# Пункт 2. Изучение простых объектов # 2. Изучение простых объектов
Создадим два простых объекта - переменные f1 и f2. Это можно сделать в одну строку: Создадим два простых объекта - переменные f1 и f2. Это можно сделать в одну строку:
f1 = 16; f2 = 3 >>>f1 = 16; f2 = 3
Можно вывести эти переменные через запятую. Тогда они будут отображены как кортеж: Можно вывести эти переменные через запятую. Тогда они будут отображены как кортеж:
f1, f2 >>>f1, f2
(16, 3) (16, 3)
Или через точку с запятой. Тогда друг за другом: Или через точку с запятой. Тогда друг за другом:
f1; f2 >>>f1; f2
16 16
3 3
Функция dir() покажет, какие объекты находятся в текущем рабочем пространстве: Функция dir() покажет, какие объекты находятся в текущем рабочем пространстве:
dir() >>>dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os'] ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'f1', 'f2', 'os']
Еще эта функция может показать атрибуты объекта: Еще эта функция может показать атрибуты объекта:
dir (f1) >>>dir (f1)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__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', 'numerator', 'real', 'to_bytes'] ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__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', 'numerator', 'real', 'to_bytes']
Для определения классовой принадлежности любого объекта следует использовать функцию type(): Для определения классовой принадлежности любого объекта следует использовать функцию type():
type(f2) >>>type(f2)
<class 'int'> <class 'int'>
Удалим объекты из рабочего пространства: Удалим объекты из рабочего пространства:
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. Изучение правила именования объектов в Python. # 3. Изучение правила именования объектов в Python.
gg1 = 1.6 >>>gg1 = 1.6
gg1 >>>gg1
1.6 1.6
hh1 = 'example' >>>hh1 = 'example'
hh1 >>>hh1
'example' 'example'
73sr = 3 >>>73sr = 3
SyntaxError: invalid decimal literal --- ошибка, т.к. имя не может начинаться с числа SyntaxError: invalid decimal literal --- ошибка, т.к. имя не может начинаться с числа
and = 7 >>>and = 7
SyntaxError: invalid syntax --- ошибка, т.к. имя не может совпадать с ключевым словом языка SyntaxError: invalid syntax --- ошибка, т.к. имя не может совпадать с ключевым словом языка
# Пункт 4. Вывод списка ключевых слов с помощью инструкции # 4. Вывод списка ключевых слов с помощью инструкции
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']
Просмотрим список, сохраним его в переменной с некоторым именем.Проверим его тип. Просмотрим список, сохраним его в переменной с некоторым именем.Проверим его тип.
kwd = keyword.kwlist >>>kwd = keyword.kwlist
kwd >>>kwd
['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']
type(kwd) >>>type(kwd)
<class 'list'> <class 'list'>
# Пункт 5. Ввод списка встроенных идентификаторов с помощью инструкций # 5. Ввод списка встроенных идентификаторов с помощью инструкций
import builtins >>>import builtins
dir(builtins) >>>dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', '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', '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', '_', '__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', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', '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', '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', '_', '__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']
Изучим назначение функций: abs, len, max, min, pow, round, sorted, sum, zip: Изучим назначение функций: abs, len, max, min, pow, round, sorted, sum, zip:
Взятие модуля: Взятие модуля:
abs(-5) >>>abs(-5)
5 5
Длина списка: Длина списка:
len([1, 2, 3]) >>>len([1, 2, 3])
3 3
Выбор максимального и минимального значения: Выбор максимального и минимального значения:
max(14, 8) >>>max(14, 8)
14 14
min (15, 0) >>>min (15, 0)
0 0
Возведение в степень: Возведение в степень:
pow (5, 2) >>>pow (5, 2)
25 25
Округление до целого: Округление до целого:
round (3,124) >>>round (3,124)
3 3
Сортировка по возрастанию(можно применить reverse = True для сортировки по убыванию): Сортировка по возрастанию(можно применить reverse = True для сортировки по убыванию):
sorted ([3, 7, 9, 75, 0, -1]) >>>sorted ([3, 7, 9, 75, 0, -1])
[-1, 0, 3, 7, 9, 75] [-1, 0, 3, 7, 9, 75]
Суммирование: Суммирование:
sum ([7, 3, 5]) >>>sum ([7, 3, 5])
15 15
Объединение объектов в кортеж (возвращается указатель на участок памяти): Объединение объектов в кортеж (возвращается указатель на участок памяти):
list1 = [1, 2, 3] >>>list1 = [1, 2, 3]
list2 = [4, 5, 6] >>>list2 = [4, 5, 6]
zip (list1, list2) >>>zip (list1, list2)
<zip object at 0x0000019F7EA6E700> <zip object at 0x0000019F7EA6E700>
Это итератор - указатель на объект памяти. Это итератор - указатель на объект памяти.
# Пункт 6. Пример того, что Python - регистрочувствительный язык. # 6. Пример того, что Python - регистрочувствительный язык.
Gg1 = 45 >>>Gg1 = 45
gg1, Gg1 >>>gg1, Gg1
(1.6, 45) (1.6, 45)
gg1 == Gg1 >>>gg1 == Gg1
False False
# Пункт 7. Изучение простых базовых типов объектов: логический (bool), целый (int), вещественный (float), комплексный (complex), строка символов (str). # 7. Изучение простых базовых типов объектов: логический (bool), целый (int), вещественный (float), комплексный (complex), строка символов (str).
## 7.1.Логический тип. ## 7.1.Логический тип.
bb1 = True >>>bb1 = True
bb2 = False >>>bb2 = False
type(bb1) >>>type(bb1)
<class 'bool'> <class 'bool'>
## 7.2. Другие простые типы. ## 7.2. Другие простые типы.
Целое число (десятичное) Целое число (десятичное)
ii1=-1234567890 >>>ii1=-1234567890
type(ii1) >>>type(ii1)
<class 'int'> <class 'int'>
Экспоненциальная форма записи числа Экспоненциальная форма записи числа
ff1 = 8.987e-12 >>>ff1 = 8.987e-12
type(ff1) >>>type(ff1)
<class 'float'> <class 'float'>
Двоичное число (префикс 0b - binary) Двоичное число (префикс 0b - binary)
dv1 = 0b1100101 >>>dv1 = 0b1100101
type(dv1) >>>type(dv1)
<class 'int'> <class 'int'>
Восьмеричное число (0о - octal) Восьмеричное число (0о - octal)
vsm1 = 0o52765 >>>vsm1 = 0o52765
type(vsm1) >>>type(vsm1)
<class 'int'> <class 'int'>
Шестнадцатеричное число (0х - hexadecimal) Шестнадцатеричное число (0х - hexadecimal)
shest1 = 0x7109af6 >>>shest1 = 0x7109af6
type(shest1) >>>type(shest1)
<class 'int'> <class 'int'>
Комплексное число Комплексное число
cc1 = 2 - 3j >>>cc1 = 2 - 3j
type(cc1) >>>type(cc1)
<class 'complex'> <class 'complex'>
Создание комплексного числа Создание комплексного числа
a = 3.67 >>>a = 3.67
b = 0.45 >>>b = 0.45
cc2 = complex (a, b) >>>cc2 = complex (a, b)
cc2 >>>cc2
(3.67+0.45j) (3.67+0.45j)
type (cc2) >>>type (cc2)
<class 'complex'> <class 'complex'>
## 7.3. Строка символов. ## 7.3. Строка символов.
@ -198,72 +198,72 @@
Одинарные и двойные кавычки взаимозаменяемы, но если открыта одинарная, то закрыта тоже Одинарные и двойные кавычки взаимозаменяемы, но если открыта одинарная, то закрыта тоже
должна быть одинарная должна быть одинарная
ss1 = "Это - строка символов" >>>ss1 = "Это - строка символов"
ss2 = 'Это - строка символов' >>>ss2 = 'Это - строка символов'
ss1 == ss2 >>>ss1 == ss2
True True
Внутри строки символов можно использовать, так называемые, «экранированные последовательности, начинающиеся со знака «\»(обратный слеш), например, \, ', ", \t, \n и другие. Пример: Внутри строки символов можно использовать, так называемые, «экранированные последовательности, начинающиеся со знака «\»(обратный слеш), например, \, ', ", \t, \n и другие. Пример:
ss1a="Это - \" строка символов \", \n \t выводимая на двух строках" >>>ss1a="Это - \" строка символов \", \n \t выводимая на двух строках"
print(ss1a) >>>print(ss1a)
Это - " строка символов ", Это - " строка символов ",
выводимая на двух строках выводимая на двух строках
Создадим строку по шаблону: Создадим строку по шаблону:
ss1b = 'Меня зовут: \n Голощапов Д.Е.' >>>ss1b = 'Меня зовут: \n Голощапов Д.Е.'
print(ss1b) >>>print(ss1b)
Меня зовут: Меня зовут:
Голощапов Д.Е. Голощапов Д.Е.
Многострочные строки можно задавать в виде значения объекта с использованием тройных кавычек, например: Многострочные строки можно задавать в виде значения объекта с использованием тройных кавычек, например:
mnogo="""Нетрудно заметить , что в результате операции >>>mnogo="""Нетрудно заметить , что в результате операции
над числами разных типов получается число, над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции.""" имеющее более сложный тип из тех, которые участвуют в операции."""
print(mnogo) >>>print(mnogo)
Нетрудно заметить , что в результате операции Нетрудно заметить , что в результате операции
над числами разных типов получается число, над числами разных типов получается число,
имеющее более сложный тип из тех, которые участвуют в операции. имеющее более сложный тип из тех, которые участвуют в операции.
При вводе такой строки символ приглашения в начале строки не появится, пока не будет вновь введены тройные кавычки. Можно обращаться к частям строки символов с использованием индексов символов по их порядку в строке. При этом надо учитывать, что нумерация символов начинается с 0. Например: При вводе такой строки символ приглашения в начале строки не появится, пока не будет вновь введены тройные кавычки. Можно обращаться к частям строки символов с использованием индексов символов по их порядку в строке. При этом надо учитывать, что нумерация символов начинается с 0. Например:
ss1[0] >>>ss1[0]
'Э' 'Э'
ss1[8] >>>ss1[8]
'р' 'р'
ss1[-2] >>>ss1[-2]
'о' 'о'
Операция «разрезания» или «создания среза», создающая новый объект: Операция «разрезания» или «создания среза», создающая новый объект:
ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!) >>>ss1[6:9] #Это часть строки – символы с 6-го индекса по 8-й (9-й не включается!)
'стр' 'стр'
ss1[13:] #Это часть строки – с 13-го индекса и до конца >>>ss1[13:] #Это часть строки – с 13-го индекса и до конца
'символов' 'символов'
ss1[:13] #Это часть строки – с начала и до 12-го индекса включительно >>>ss1[:13] #Это часть строки – с начала и до 12-го индекса включительно
'Это - строка ' 'Это - строка '
ss1[5:-8] #Это часть строки – с 5-го индекса и до 8-го от конца >>>ss1[5:-8] #Это часть строки – с 5-го индекса и до 8-го от конца
' строка ' ' строка '
ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2 >>>ss1[3:17:2] #Часть строки – с 3-го по 16-й индексы с шагом 2
' тоасм' ' тоасм'
Обратим внимание на то, что в срезе указываются не позиции элементов, а их индексы и что указываемая правая граница в срез не включается. Обратим внимание на то, что в срезе указываются не позиции элементов, а их индексы и что указываемая правая граница в срез не включается.
Значение при отрицательном значении шага: Значение при отрицательном значении шага:
ss1[17:3:-2] >>>ss1[17:3:-2]
'омсаот ' 'омсаот '
При замене 17 на -4 получается такой же результат: При замене 17 на -4 получается такой же результат:
ss1[-4:3:-2] >>>ss1[-4:3:-2]
'омсаот ' 'омсаот '
Строка является неизменяемым объектом. Попробуем, например, инструкцию Строка является неизменяемым объектом. Попробуем, например, инструкцию
ss1[4]='=' >>>ss1[4]='='
Traceback (most recent call last): Traceback (most recent call last):
File "<pyshell#78>", line 1, in <module> File "<pyshell#78>", line 1, in <module>
ss1[4]='=' ss1[4]='='
@ -271,76 +271,76 @@
Однако, можно это сделать по-другому, переопределив её: Однако, можно это сделать по-другому, переопределив её:
ss1=ss1[:4]+'='+ss1[5:] >>>ss1=ss1[:4]+'='+ss1[5:]
ss1 >>>ss1
'Это = строка символов' 'Это = строка символов'
С использованием ранее созданной строки ss1b попробуем создать объекты с разными срезами исходной строки. С использованием ранее созданной строки ss1b попробуем создать объекты с разными срезами исходной строки.
ss1b[-1] >>>ss1b[-1]
'.' '.'
ss1b_cut = ss1b [::-1] >>>ss1b_cut = ss1b [::-1]
ss1b_cut >>>ss1b_cut
'.Е.Д вопащолоГ \n :тувоз янеМ' '.Е.Д вопащолоГ \n :тувоз янеМ'
Самостоятельное создание объектов разных типов. Отображение типов и значений созданных объектов. Самостоятельное создание объектов разных типов. Отображение типов и значений созданных объектов.
num10 = 26 >>>num10 = 26
type(num10) >>>type(num10)
<class 'int'> <class 'int'>
num16 = hex(num10) >>>num16 = hex(num10)
num16 >>>num16
'0x1a' '0x1a'
type(num16) >>>type(num16)
<class 'str'> <class 'str'>
# Пункт 8. Списки (list), кортежи (tuple), словари (dict), множества (set). # 8. Списки (list), кортежи (tuple), словари (dict), множества (set).
## 8.1. Список list - изменяемый тип данных. Это упорядоченная последовательность из элементов ## 8.1. Список list - изменяемый тип данных. Это упорядоченная последовательность из элементов
одного или разных типов. одного или разных типов.
Пример списка с 3 элементами разных типов: Пример списка с 3 элементами разных типов:
spis1=[111,'Spisok',5-9j] >>>spis1=[111,'Spisok',5-9j]
spis1 >>>spis1
[111, 'Spisok', (5-9j)] [111, 'Spisok', (5-9j)]
Еще пример: список, содержащий последовательность отсчетов сигнала в виде «единичной ступеньки»: Еще пример: список, содержащий последовательность отсчетов сигнала в виде «единичной ступеньки»:
stup=[0,0,1,1,1,1,1,1,1] >>>stup=[0,0,1,1,1,1,1,1,1]
stup >>>stup
[0, 0, 1, 1, 1, 1, 1, 1, 1] [0, 0, 1, 1, 1, 1, 1, 1, 1]
Список можно вводить на нескольких строках. При этом список будет считаться незавершенным, пока не будет введена закрывающая квадратная скобка, например: Список можно вводить на нескольких строках. При этом список будет считаться незавершенным, пока не будет введена закрывающая квадратная скобка, например:
spis=[1,2,3,4, >>>spis=[1,2,3,4,
5,6,7, 5,6,7,
8,9,10] 8,9,10]
spis >>>spis
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
При работе с элементами списка можно использовать индексы точно так же, как это делали с элементами символьной строки, например, ссылка на последний элемент списка: При работе с элементами списка можно использовать индексы точно так же, как это делали с элементами символьной строки, например, ссылка на последний элемент списка:
spis1 [-1] >>>spis1 [-1]
(5-9j) (5-9j)
или или
stup [-8 :: 2] >>>stup [-8 :: 2]
[0, 1, 1, 1] [0, 1, 1, 1]
Проверим возможность изменения списка, например: Проверим возможность изменения списка, например:
spis1[1]='Список' >>>spis1[1]='Список'
spis1 >>>spis1
[111, 'Список', (5-9j)] [111, 'Список', (5-9j)]
Текущее число элементов в списке можно узнать с помощью функции len(): Текущее число элементов в списке можно узнать с помощью функции len():
len(spis1) >>>len(spis1)
3 3
Методы объекта находятся в списке его атрибутов, который выводится с помощью уже известной функции dir(). Описание метода можно вывести с помощью функции help() по образцу Методы объекта находятся в списке его атрибутов, который выводится с помощью уже известной функции dir(). Описание метода можно вывести с помощью функции help() по образцу
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
@ -348,53 +348,53 @@
С помощью методов объектов-списков можно добавлять и удалять элементы: С помощью методов объектов-списков можно добавлять и удалять элементы:
spis1.append('New item') >>>spis1.append('New item')
spis1 >>>spis1
[111, 'Список', (5-9j), 'New item'] [111, 'Список', (5-9j), 'New item']
spis1+['New item'] >>>spis1+['New item']
[111, 'Список', (5-9j), 'New item', 'New item'] [111, 'Список', (5-9j), 'New item', 'New item']
spis1 >>>spis1
[111, 'Список', (5-9j), 'New item'] [111, 'Список', (5-9j), 'New item']
Обратим внимание на то, что в этой инструкции новый список только отображается, но не сохраняется. Обратим внимание на то, что в этой инструкции новый список только отображается, но не сохраняется.
Добавим в конец списка spis1 строку ss1b и отобразите список: Добавим в конец списка spis1 строку ss1b и отобразите список:
spis1 += ss1b >>>spis1 += ss1b
spis1 >>>spis1
[111, 'Список', (5-9j), 'New item', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', 'Г', 'о', 'л', 'о', 'щ', 'а', 'п', 'о', 'в', ' ', 'Д', '.', 'Е', '.'] [111, 'Список', (5-9j), 'New item', 'М', 'е', 'н', 'я', ' ', 'з', 'о', 'в', 'у', 'т', ':', ' ', '\n', ' ', 'Г', 'о', 'л', 'о', 'щ', 'а', 'п', 'о', 'в', ' ', 'Д', '.', 'Е', '.']
spis1 = [111, 'Список', (5-9j), 'New item'] >>>spis1 = [111, 'Список', (5-9j), 'New item']
spis1.append(ss1b) >>>spis1.append(ss1b)
spis1 >>>spis1
[111, 'Список', (5-9j), 'New item', 'Меня зовут: \n Голощапов Д.Е.'] [111, 'Список', (5-9j), 'New item', 'Меня зовут: \n Голощапов Д.Е.']
Удаление элемента: Удаление элемента:
spis1.pop(1) >>>spis1.pop(1)
'Список' 'Список'
spis1 >>>spis1
[111, (5-9j), 'New item', 'Меня зовут: \n Голощапов Д.Е.'] [111, (5-9j), 'New item', 'Меня зовут: \n Голощапов Д.Е.']
Также могут использоваться методы insert, remove, extend, clear, sort, reverse, copy, count, index: Также могут использоваться методы insert, remove, extend, clear, sort, reverse, copy, count, index:
Для insert (Вставка элемента в определенное место по индексу): Для insert (Вставка элемента в определенное место по индексу):
help(spis1.insert) >>>help(spis1.insert)
Help on built-in function insert: Help on built-in function insert:
insert(index, object, /) method of builtins.list instance insert(index, object, /) method of builtins.list instance
Insert object before index. Insert object before index.
spis1.insert(2, "hello") >>>spis1.insert(2, "hello")
spis1 >>>spis1
[111, (5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.'] [111, (5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.']
spis1.insert(8, "test") >>>spis1.insert(8, "test")
spis1 >>>spis1
[111, (5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test'] [111, (5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test']
Для remove (Удаление элемента по значению): Для remove (Удаление элемента по значению):
help(spis1.remove) >>>help(spis1.remove)
Help on built-in function remove: Help on built-in function remove:
remove(value, /) method of builtins.list instance remove(value, /) method of builtins.list instance
@ -402,43 +402,41 @@
Raises ValueError if the value is not present. Raises ValueError if the value is not present.
spis1.remove(111) >>>spis1.remove(111)
spis1 >>>spis1
[(5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test'] [(5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test']
spis1.remove('kitten') >>>spis1.remove('kitten')
Traceback (most recent call last): Traceback (most recent call last):
File "<pyshell#125>", line 1, in <module> File "<pyshell#125>", line 1, in <module>
spis1.remove('kitten')
ValueError: list.remove(x): x not in list
Для extend (Добавление элементов объекта в конец другого объекта): Для extend (Добавление элементов объекта в конец другого объекта):
help(spis1.extend) >>>help(spis1.extend)
Help on built-in function extend: Help on built-in function extend:
extend(iterable, /) method of builtins.list instance extend(iterable, /) method of builtins.list instance
Extend list by appending elements from the iterable. Extend list by appending elements from the iterable.
end1 = [123, "mew", (1,2)] >>>end1 = [123, "mew", (1,2)]
spis1.extend(end1) >>>spis1.extend(end1)
spis1 >>>spis1
[(5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)] [(5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)]
Для clear (Полное очищение списка): Для clear (Полное очищение списка):
help(spis1.clear) >>>help(spis1.clear)
Help on built-in function clear: Help on built-in function clear:
clear() method of builtins.list instance clear() method of builtins.list instance
Remove all items from list. Remove all items from list.
end1.clear() >>>end1.clear()
end1 >>>end1
[] []
Для sort ( Сортировка списка без создания нового объекта): Для sort ( Сортировка списка без создания нового объекта):
help(spis1.sort) >>>help(spis1.sort)
Help on built-in function sort: Help on built-in function sort:
sort(*, key=None, reverse=False) method of builtins.list instance sort(*, key=None, reverse=False) method of builtins.list instance
@ -452,26 +450,26 @@
The reverse flag can be set to sort in descending order. The reverse flag can be set to sort in descending order.
end1 = [5, 6, 9.99999, 384, 0, -5] >>>end1 = [5, 6, 9.99999, 384, 0, -5]
end1.sort(key = abs, reverse = True) >>>end1.sort(key = abs, reverse = True)
end1 >>>end1
[384, 9.99999, 6, 5, -5, 0] [384, 9.99999, 6, 5, -5, 0]
Для copy (Создание копии списка): Для copy (Создание копии списка):
help(end1.copy) >>>help(end1.copy)
Help on built-in function copy: Help on built-in function copy:
copy() method of builtins.list instance copy() method of builtins.list instance
Return a shallow copy of the list. Return a shallow copy of the list.
endcopy = end1.copy() >>>endcopy = end1.copy()
endcopy >>>endcopy
[384, 9.99999, 6, 5, -5, 0] [384, 9.99999, 6, 5, -5, 0]
Для index (Поиск индекса по значению): Для index (Поиск индекса по значению):
help(endcopy.index) >>>help(endcopy.index)
Help on built-in function index: Help on built-in function index:
index(value, start=0, stop=9223372036854775807, /) method of builtins.list instance index(value, start=0, stop=9223372036854775807, /) method of builtins.list instance
@ -479,9 +477,9 @@
Raises ValueError if the value is not present. Raises ValueError if the value is not present.
endcopy.index(0) >>>endcopy.index(0)
5 5
endopy.index("lalala") >>>endopy.index("lalala")
Traceback (most recent call last): Traceback (most recent call last):
File "<pyshell#142>", line 1, in <module> File "<pyshell#142>", line 1, in <module>
endopy.index("lalala") endopy.index("lalala")
@ -489,83 +487,83 @@
Для count (Подсчет количества элементов по значению): Для count (Подсчет количества элементов по значению):
help(endcopy.count) >>>help(endcopy.count)
Help on built-in function count: Help on built-in function count:
count(value, /) method of builtins.list instance count(value, /) method of builtins.list instance
Return number of occurrences of value. Return number of occurrences of value.
endcopy.count(5) >>>endcopy.count(5)
1 1
endcopy.count(666666) >>>endcopy.count(666666)
0 0
Списки могут быть вложенными: Списки могут быть вложенными:
spis2=[spis1,[4,5,6,7]] >>>spis2=[spis1,[4,5,6,7]]
spis2 >>>spis2
[[(5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)], [4, 5, 6, 7]] [[(5-9j), 'hello', 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)], [4, 5, 6, 7]]
Обращение к элементам вложенного списка: Обращение к элементам вложенного списка:
spis2[0][1] >>>spis2[0][1]
'hello' 'hello'
Изменение элемента вложенного списка: Изменение элемента вложенного списка:
spis2[0][1]=78 >>>spis2[0][1]=78
spis2 >>>spis2
[[(5-9j), 78, 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)], [4, 5, 6, 7]] [[(5-9j), 78, 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)], [4, 5, 6, 7]]
spis1 >>>spis1
[(5-9j), 78, 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)] [(5-9j), 78, 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)]
Видим, что spis1 тоже изменился. Это происходит потому, что python работает не просто с объектами, а с ссылками на участки памяти. То есть, в Python списки передаются по ссылке, а не по значению.Упоминая spis1 в строке spis2=[spis1,[4,5,6,7]] мы не создаем копию spis1, а сообщаем именно тот список, поэтому его изменения в составе spis2 отображаются на исходном spis1. Видим, что spis1 тоже изменился. Это происходит потому, что python работает не просто с объектами, а с ссылками на участки памяти. То есть, в Python списки передаются по ссылке, а не по значению.Упоминая spis1 в строке spis2=[spis1,[4,5,6,7]] мы не создаем копию spis1, а сообщаем именно тот список, поэтому его изменения в составе spis2 отображаются на исходном spis1.
Создание своего списка - объекта: Создание своего списка - объекта:
spis3 = [100, 'Test', True, spis1] >>>spis3 = [100, 'Test', True, spis1]
spis3 >>>spis3
[100, 'Test', True, [(5-9j), 78, 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)]] [100, 'Test', True, [(5-9j), 78, 'New item', 'Меня зовут: \n Голощапов Д.Е.', 'test', 123, 'mew', (1, 2)]]
## 8.2.Кортеж: последовательность как список, но неизменяемая как строка. ## 8.2.Кортеж: последовательность как список, но неизменяемая как строка.
Примеры операций с кортежами: создание кортежа: Примеры операций с кортежами: создание кортежа:
kort1=(222,'Kortezh',77+8j) >>>kort1=(222,'Kortezh',77+8j)
Изменить кортеж нельзя, но можно его переопределить: Изменить кортеж нельзя, но можно его переопределить:
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 Голощапов Д.Е.')
Теперь переопределим кортеж с удалением комплексного элемента: Теперь переопределим кортеж с удалением комплексного элемента:
kort2=kort1[:2]+kort1[3:] >>>kort2=kort1[:2]+kort1[3:]
kort2 >>>kort2
(222, 'Kortezh', 1, 2, 'Меня зовут: \n Голощапов Д.Е.') (222, 'Kortezh', 1, 2, 'Меня зовут: \n Голощапов Д.Е.')
Два важных метода кортежа (они есть также и у списков): Два важных метода кортежа (они есть также и у списков):
• Определение индекса заданного элемента: • Определение индекса заданного элемента:
kort1.index(2) >>>kort1.index(2)
4 4
• Подсчет числа вхождений заданного элемента в кортеже: • Подсчет числа вхождений заданного элемента в кортеже:
kort1.count(222) >>>kort1.count(222)
1 1
Методов append и pop у кортежей нет, т.к. они являются неизменяемыми. Попробуем операцию замены элемента кортежа: Методов append и pop у кортежей нет, т.к. они являются неизменяемыми. Попробуем операцию замены элемента кортежа:
kort1[2]=90 >>>kort1[2]=90
Traceback (most recent call last): Traceback (most recent call last):
File "<pyshell#161>", line 1, in <module> File "<pyshell#161>", line 1, in <module>
kort1[2]=90 kort1[2]=90
@ -573,12 +571,12 @@
Создание объекта-кортежа с элементами разных типов: число, строка, список, кортеж. Создание объекта-кортежа с элементами разных типов: число, строка, список, кортеж.
kortstr = ("h", "lambda", "always", 54, [1,2,3], (6,7)) >>>kortstr = ("h", "lambda", "always", 54, [1,2,3], (6,7))
kortstr >>>kortstr
('h', 'lambda', 'always', 54, [1, 2, 3], (6, 7)) ('h', 'lambda', 'always', 54, [1, 2, 3], (6, 7))
type(kortstr[5]) >>>type(kortstr[5])
<class 'tuple'> <class 'tuple'>
type(kortstr[4]) >>>type(kortstr[4])
<class 'list'> <class 'list'>
## 8.3. Словарь (dictionary) - содержит в себе совокупность пар ## 8.3. Словарь (dictionary) - содержит в себе совокупность пар
@ -586,52 +584,52 @@
Пример создания словаря: Пример создания словаря:
dic1={'Saratov':145, 'Orel':56, 'Vologda':45} >>>dic1={'Saratov':145, 'Orel':56, 'Vologda':45}
dic1 >>>dic1
{'Saratov': 145, 'Orel': 56, 'Vologda': 45} {'Saratov': 145, 'Orel': 56, 'Vologda': 45}
Обращение к элементам словаря не по индексам, а по ключам: Обращение к элементам словаря не по индексам, а по ключам:
dic1['Orel'] >>>dic1['Orel']
56 56
Пополнение словаря (добавление элемента, изменение словаря): Пополнение словаря (добавление элемента, изменение словаря):
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, создающие списки, соответственно, ключей или значений из словаря. Функция sorted позволяет увидеть список упорядоченным по ключам или по значениям: Для того, чтобы получить перечень ключей или значений из словаря следует использовать методы keys или values, создающие списки, соответственно, ключей или значений из словаря. Функция sorted позволяет увидеть список упорядоченным по ключам или по значениям:
sorted(dic1.keys()) >>>sorted(dic1.keys())
['Orel', 'Pskov', 'Saratov', 'Vologda'] ['Orel', 'Pskov', 'Saratov', 'Vologda']
sorted(dic1.values()) >>>sorted(dic1.values())
[45, 56, 78, 145] [45, 56, 78, 145]
Элементы словаря могут быть любого типа, в том числе и словарями. Например,создадим словарь: Элементы словаря могут быть любого типа, в том числе и словарями. Например,создадим словарь:
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]
'standart deviation' 'standart deviation'
Создадим более сложный словарь из списка с элементами-кортежами с использованием функции dict: Создадим более сложный словарь из списка с элементами-кортежами с использованием функции dict:
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 Голощапов Д.Е.'}
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 элементами и попробуйте создать из них словарь с помощью функций dict и zip. Сколько элементов в получившемся словаре? Объясните это число. Самостоятельно придумайте объект-кортеж с 7 элементами и объект-список с 5 элементами и попробуйте создать из них словарь с помощью функций dict и zip. Сколько элементов в получившемся словаре? Объясните это число.
terms_tuple = ("mean", "median", "mode", "variance", "standard deviation", "correlation", "regression") >>>terms_tuple = ("mean", "median", "mode", "variance", "standard deviation", "correlation", "regression")
count_list = ["one", "two", "three", "four", "five"] >>>count_list = ["one", "two", "three", "four", "five"]
terms_dict = dict(zip(count_list, terms_tuple)) >>>terms_dict = dict(zip(count_list, terms_tuple))
terms_dict >>>terms_dict
{'one': 'mean', 'two': 'median', 'three': 'mode', 'four': 'variance', 'five': 'standard deviation'} {'one': 'mean', 'two': 'median', 'three': 'mode', 'four': 'variance', 'five': 'standard deviation'}
Как мы видим длина словаря составляет 5 объектов. Это связано с функцией zip, которая делает так, что длина итогового объекта будет соответствовать минимальной длине составляющего. Как мы видим длина словаря составляет 5 объектов. Это связано с функцией zip, которая делает так, что длина итогового объекта будет соответствовать минимальной длине составляющего.
@ -640,8 +638,8 @@
Пример создания множества: Пример создания множества:
mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'} >>>mnoz1={'двигатель','датчик','линия связи','датчик','микропроцессор','двигатель'}
mnoz1 >>>mnoz1
{'микропроцессор', 'датчик', 'линия связи', 'двигатель'} {'микропроцессор', 'датчик', 'линия связи', 'двигатель'}
В созданном множестве дубликаты элементов были автоматически удалены. В созданном множестве дубликаты элементов были автоматически удалены.
@ -650,33 +648,33 @@
определение числа элементов определение числа элементов
len(mnoz1) >>>len(mnoz1)
4 4
проверка наличия элемента во множестве проверка наличия элемента во множестве
'датчик' in mnoz1 >>>'датчик' in mnoz1
True True
добавление и удаление элемента добавление и удаление элемента
mnoz1.add('реле') >>>mnoz1.add('реле')
mnoz1.remove('линия связи') >>>mnoz1.remove('линия связи')
mnoz1 >>>mnoz1
{'реле', 'датчик', 'микропроцессор', 'двигатель'} {'реле', 'датчик', 'микропроцессор', 'двигатель'}
Объект-множество с элементами разных типов Объект-множество с элементами разных типов
mnoz2 = {'спичка', 15, False, 'gear'} >>>mnoz2 = {'спичка', 15, False, 'gear'}
mnoz2 >>>mnoz2
{False, 'спичка', 'gear', 15} {False, 'спичка', 'gear', 15}
len(mnoz2) >>>len(mnoz2)
4 4
mnoz2.remove(15) >>>mnoz2.remove(15)
mnoz2 mnoz2
{False, 'спичка', 'gear'} {False, 'спичка', 'gear'}
# Пункт 9. Завершение работы в среде IDLE. # 9. Завершение работы в среде IDLE.

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