| |
На главную BearWakes |
|
| МЕТОДЫ INT |
ВЫПОЛНЯЕМАЯ ФУНКЦИЯ |
|
| pow (2, 3) round (2, 4) |
Степень (a, b), округление (x, y), ЕЩЕ: max, min, sum |
|
| a % 15 |
Одновременная кратность 3 и 5 (!) |
|
| a =
((m - 1) // 2) * 2 + 1 |
Проверка на нечетность (!) Всегда будет нечетное с
округлением в меньшую сторону (!). |
|
| n[:] == n[::-1] |
Проверка палиндрома (числа одинаково читающегося
слева-направо) |
|
| |
|
|
| МЕТОДЫ СПИСКОВ |
|
|
| |
|
|
| lst.append(x) |
Добававляет элемент в конец списка. Эквивалентен [len
(a):] = [x] |
|
| lst.extend( ) |
Расширяет один список другим списком:
lst[2][1][2].extend(sub_list) или сразу подсписок lst[2][2].append([7000,
700]) |
|
| lst.clear( ) |
Удаляет все элементы из списка. Эквивалентно del a [:] |
|
| lst.copy( ) |
Возвращает мелкую копию списка. Эквивалентно a [:] |
|
| lst.index(x [, start [, end] ] ) |
Возвращает индекс в списке 1-го элемента, значение
которого равно x. Вызывает ошибку ValueError, если такого элемента нет. |
|
| lst.insert( i , x) |
Вставка элемента x перед
индексом i. a.insert (0, x)
вставляет в начало списка, а a.insert (len (a), x) эквивалентно a.append (x). |
|
| lst.pop( [ i ] ) |
Удаляет и возвращает последний элемент в списке, если не
указан его индекс |
|
| lst.remove( x ) |
Удаляет из списка 1-й элемент, значение которого равно x.
Если такого элемента нет, возникает ошибка ValueError. |
|
| lst.reverse( ) |
Реверс элементов списка на месте (после удачной операции
возвращает None). Экв. list1[i] = list1[i][::-1] |
|
| lst.sort(*, key=None, reverse=False) |
Сортировка элементов списка на месте (аргументы можно
использовать для настройки сортировки, см. Sorted () для их объяснения). |
|
| lst2 = list[lst1] |
Создать копию списка lst1. Если записать lst1 = lst2 то
будет создана ссылка на тот же объект, а
не новый список. |
|
| sorted(lst) |
Отдает отсортированный список по возрастанию |
|
| |
|
|
| МЕТОДЫ СТРОК |
Строковые методы не изменяют содержимого объекта, к
которому они применяются |
|
| |
|
|
| len(s) |
Длина строки |
|
| chr(число) |
Отдает код символа в UTF8, |
|
| ord(символ) |
Отдает по коду UFT8 его символ. |
|
| str [i], str * 3, str1 + str2 |
Обращение по индексу, Повторение строки, Конкатенация
строки |
|
| s =
'str'; s = "str"; s = '''str'''; s = """str""" |
Литералы строк |
|
| s =
"s\np\ta\nbbb" |
Экранированные последовательности |
|
| s =
b"byte" |
Строка байтов |
|
| s =
r"C:\temp\new" |
Неформатированные строки (подавляют экранирование) |
|
| s.append( [1, 2, 3] ) или s.append("Hello") |
Добавить символ / строку / группу символов в конец строки
/ списка. S.append(46) - затрёт список? |
|
| s.capitalize() |
Переводит первый символ строки в верхний регистр, а все
остальные в нижний |
|
| s.casefold() |
Более агрессивный вариант lower. Действует на любые языки |
|
| s.center(width, [fill]) |
Возвращает отцентрованную строку, по краям которой стоит
символ fill (пробел по умолчанию) |
|
| s.clear() |
Тоже самое, что и a [:]. Копия списка с созданием нового
объекта |
|
| s.copy() |
|
|
| s.count(str, [start], [end] ) |
Возвращает количество непересекающихся вхождений подстроки
в диапазоне [начало, конец] (0 и длина строки по умолчанию) |
|
| s.endswith(<suffix>, <start>, <end>) |
Определяет оканчивается ли исходная строка s подстрокой
<suffix> (частью символов конца строки) |
|
| s.endswith(suffix, start, end) |
Заканчивается ли строка s подстрокой (шаблоном) suffix |
|
| s.expandtabs([tabsize]) |
Возвращает копию строки, в которой все символы табуляции
заменяются одним или несколькими пробелами, в зависимости от текущего столбца. Если TabSize не указан, размер табуляции полагается
равным 8 пробелам |
|
| s.find(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер первого
вхождения или -1 |
|
| s.format(*args, **kwargs) |
Форматирование строки |
|
| s.index(str, [start],[end]) |
Поиск подстроки (символ/лы ) в строке. Возвращает номер
первого вхождения или вызывает ValueError. Без start : stop ищет слева |
|
| s.insert(1,'Привет') |
Вставить элемент между индексами 0 и 2 (на индекс 1).
Только 1 объект можно |
|
| s.isalnum() |
Состоит ли строка из цифр или букв |
|
| s.isalpha() |
Состоит ли строка из букв |
|
| s.isdigit() |
Состоит ли строка из цифр |
|
| s.islower() |
Состоит ли строка из символов в нижнем регистре |
|
| s.isspace() |
Состоит ли строка из неотображаемых символов (пробел,
символ перевода страницы ('\f'), "новая строка" ('\n'),
"перевод каретки" ('\r'), "горизонтальная
табуляция" ('\t') и "вертикальная табуляция" ('\v')) |
|
| s.istitle() |
Начинаются ли слова в строке с заглавной буквы |
|
| s.isupper() |
Состоит ли строка из символов в верхнем регистре |
|
| s.join(список) |
Сборка строки из списка с разделителем S |
|
| s.ljust(width, fillchar=" ") |
Делает длину строки не меньшей width, по необходимости
заполняя последние символы символом fillchar |
|
| s.lower() |
Преобразование строки к нижнему регистру |
|
| s.lstrip([chars]) |
Удаление пробельных символов в начале строки (без
параметра) |
|
| s.partition(шаблон) |
Возвращает кортеж, содержащий часть перед первым шаблоном,
сам шаблон, и часть после шаблона. Если шаблон не найден, возвращается кортеж, содержащий саму строку, а затем две пустых строки |
|
| s.pop( i ) |
Вырезает индекс с конца, если без (i) и сначала, если
цифра. Возвращает значение вырезанного. |
|
| s.remove(43) lst.remove(min(lst)) |
Удалить по первое попавшееся значение 43 слева направо.
Без аргумента удаляет первое слева |
|
| s.removeprefix ("Виктор") |
Удалить из строки все, кроме Виктор, *с версии 3.9 |
|
| s.removsufix ("Виктор") |
|
|
| s.replace(шаблон, замена[, maxcount] ) |
Замена 'шаблона' на замену, maxcount (*с версии 3.10)
ограничивает количество замен.
.replace(' ', ' ') |
|
| s.reverse() |
Реверс без аргументов |
|
| s.rfind(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер последнего
вхождения или -1 |
|
| s.rindex(str, [start],[end]) |
Поиск подстроки в строке. Возвращает номер последнего
вхождения или вызывает ValueError |
|
| s.rjust(width, fillchar=" ") |
Делает длину строки не меньшей width, по необходимости
заполняя первые символы символом fillchar |
|
| s.rpartition(sep) |
Возвращает кортеж, содержащий часть перед последним
шаблоном, сам шаблон, и часть после шаблона. Если шаблон не найден,
возвращается кортеж, содержащий две пустых строки,
а затем саму строку |
|
| s.rstrip([chars]) |
Удаление пробельных символов в конце строки (без
параметра) |
|
| s.sort() |
Сортировка по возрастанию |
|
| s.sort(key=len) |
Сортировка по длине. Можно другую функцию применить |
|
| s.sort(reverse=True) |
Сортировка по убыванию |
|
| s.split(символ) |
Разбиение строки по разделителю |
|
| s.starswith(suffix, start, end) |
Начинается ли строка s с шаблона подстроки |
|
| s.startswith(suffix, start, end) |
Определяет начинается ли исходная строка a подстрокой
<suffix> (частью символов) |
|
| s.strip([chars]) |
Удаление пробельных символов в начале и в конце строки |
|
| s.swapcase() |
Переводит символы нижнего регистра в верхний, а верхнего –
в нижний |
|
| s.title() |
Первую букву каждого слова переводит в верхний регистр, а
все остальные в нижний |
|
| s.upper() |
Преобразование строки к верхнему регистру |
|
| s.zfill(width) |
Делает длину строки не меньшей width, по необходимости
заполняя первые символы нулями |
|
| n =
int(str(n)[0]) * n |
Достать 1-ю цифру в сторке, если ввод был n = int(input())
(!) |
|
| |
|
|
| СРЕЗЫ |
Срезы похожи на комбинацию индексации и функции range().
Списочные методы меняют содержимое объекта к которому применяются. |
|
| |
|
|
| if 'love'
in s: |
Оператор принадлежности in |
|
| s [start: stop: step] |
Индексы от Start до Stop (невкл) с шагом Step. Извлечение
среза |
|
| s [:] |
Вся строка целиком |
|
| s [::-1] |
Реверсивный вывод - Строка в обратном порядке (шаг
отрицательный). Экв. elem.reverse( ) в цикле for |
|
| s [-1::-3] |
При реверсивном выводе с шагом Start будет считаться
началом среза справа (!) |
|
| s [:5] |
Первые 5 символов строки |
|
| s [5:] |
Индексы от 5 и до конца |
|
| s [-2:] |
Последние 2 символа строки |
|
| s [3:5] = 34, 12 |
Присвоить новое значение индексам с 3-го по 5-й невкл |
|
| s [2:4] = 32, 26 |
Если аргументов < интервала, то список уменьшится IN
[1, 2, 4, 7, 8] OUT [1, 2, 32, 26] |
|
| s [1, 2, 3] d = s [:] |
Создаем новый объект d с копией списка a |
|
| del s
[2] |
Удаление элемента с индексом 2 из списка |
|
| del s
[1::2] |
Удалить все нечетные цифры элементы списка |
|
| s [len(s) - 1] или s [-1] |
Достать последний элемент (символ) в строке |
|
| s =
s [s:4] + 'a' + s[5:] |
Заменить в строке символ нельзя. Поэтому, расрезаем,
склеиваем с новым символом и пересприсваиваем |
|
| str[i::].count(lst[i]) - 1 |
Пример среза |
|
| lst.append(a + b) |
Добавь в список lst сумму переменных a + b (или просто 1
элемент в конец) |
|
| lst.extend(input()) |
Перебирает аргументы (разбивает на символы) и помещает их
в список один за другим в хвостовую часть. |
|
| |
|
|
| МЕТОДЫ СЛОВАРЕЙ |
Присвоение по новому ключу расширяет словарь, присвоение
по существующему ключу перезаписывает его, а |
|
| |
попытка извлечения несуществующего ключа порождает
исключение |
|
| classmethod dict.fromkeys(seq[, value]) |
Создает словарь с ключами из seq и значением value (по
умолчанию None). |
|
| dict.clear() |
Очищает словарь. |
|
| dict.copy() |
Возвращает копию словаря. |
|
| dict.get(key [, default] ) |
Возвращает значение ключа, но если его нет, не бросает
исключение, а возвращает default (по умолчанию None). |
|
| dict.items() |
Возвращает пары (ключ, значение). |
|
| dict.keys() |
Возвращает ключи в словаре. |
|
| dict.get(key [, default] ) |
Удаляет ключ и возвращает значение. Если ключа нет,
возвращает default (по умолчанию бросает исключение). |
|
| dict.popitem() |
Удаляет и возвращает пару (ключ, значение). Если словарь
пуст, бросает исключение KeyError. Помните, что словари неупорядочены. |
|
| dict.setdefault(key [, default] ) |
Возвращает значение ключа, но если его нет, не бросает
исключение, а создает ключ со значением default (по умолчанию None). |
|
| dict.update( [other] ) |
Обн-яет словарь, добавляя пары (ключ, значение) из other.
Существующие ключи перезаписываются. Возвр. None (не новый словарь!). |
|
| dict.values() - |
возвращает значения в словаре |
|
| a | b и a |= b |
Объединение и обновление словарей *с версии 3.10 |
|
| |
|
|
| МНОЖЕСТВА |
Набор неупорядоченных элементов. Отличие set от frozenset,
set - изменяемый тип данных, а frozenset - нет. Как со списками и кортежами. |
|
| |
|
|
| len(s) |
Число элементов в множестве (размер множества). |
|
| x in
s |
Принадлежит ли x множеству s. |
|
| set.isdisjoint(other) |
Истина, если set и other не имеют общих элементов. |
|
| set ==
other |
Все элементы set принадлежат other, все элементы other
принадлежат set. |
|
| set.issubset(other) или set <= other |
Все элементы set принадлежат other. |
|
| set.issuperset(other) или set >= other |
Аналогично. |
|
| set.union(other, ...) или set | other | |
Объединение нескольких множеств. |
|
| set.intersection(other, ...) или set & other & |
Пересечение. |
|
| set.difference(other, ...) или set - other - |
Множество из всех элементов set, не принадлежащие ни
одному из other. |
|
| set.symmetric_difference(other); set ^ other - |
Множество из элементов, встречающихся в одном множестве,
но не встречающиеся в обоих. |
|
| set.copy() |
Копия множества. |
|
| set.update(other, ...); set |= other | |
Объединение. |
|
| set.intersection_update(other, ...); set &= other & |
Пересечение. |
|
| set.difference_update(other, ...); set -= other | |
Вычитание. |
|
| set.symmetric_difference_update(other); set ^= other - |
Множество из элементов, встречающихся в одном множестве,
но не встречающиеся в обоих. |
|
| set.add(elem) |
Добавляет элемент в множество. |
|
| set.remove(elem) |
Удаляет элемент из множества. KeyError, если такого
элемента не существует. |
|
| set.discard(elem) |
Удаляет элемент, если он находится в множестве. |
|
| set.pop() |
Удаляет первый элемент из множества. Так как множества не
упорядочены, нельзя точно сказать, какой элемент будет первым. |
|
| set.clear() |
Очистка множества. |
|
| |
|
|
| КОРТЕЖИ tuple |
Можно складывать и умножать на число. Могут состоять из
произвольных элементов. Неизменяемый тип данных |
|
| |
|
|
| tup =
1, 5, True, 'London' |
Объявление кортежа, можно без ( ) |
|
| tup =
tuple("Hello world!") |
Преобразовать объекты (например, строки) в кортежи |
|
| lst =
list(tup) |
Преобразовать (неизменяемый) кортеж в список |
|
| tup =
(20, 10, 13, (1, 2, 3)) |
Кортеж в кортеже |
|
| b =
a[3][1] |
Обращаемся к 4-му элементу кортежа a (подкортежу) и ко
2-му элементу полученного подкортежа. |
|
| [a;
b) |
Означает промежуток из чисел от a включительно до b
невключительно, соответствует записи range(a, b). |
|
| [b; a) |
Соответствует записи range(b, a) |
|
| |
|
|
| |
|
|
| f - строки и
форматирование |
Самые быстрые в исполнении |
|
| |
|
|
| print(f'{fio [-1] } {fio [0][0] }.{fio [1][0] }.') |
f-строка со срезами в каждом элементе ФИО от [0]. OUT
Козлова Д.М. |
|
| print(f"Команда {a} длину", len(a), "символов") |
|
|
| print(f'''Аденин: {a.count('а')}\nГуанин: {a.count('г')}\n''') |
|
|
| "message = ( |
Многострочные f-строки |
|
| f'Hello, {first_name} {last_name}! ' |
|
|
| f'You are {age}. You are a {profession}.\n' )" |
Экранированные (служебные) символы Hello\nworld. При
воводе выдаст в разных строках. Служ.симв.= 1 знак! |
|
| |
|
|
| v =
"""Hello_с_новой_строки""" |
|
|
| print(str, sep=" ", end=" ") |
Вывести значения до двух знаков после точки L=68.00
S=314.00 |
|
| print("Вывели %s строк в %s
выражении", %(a, b)) |
Вывести тип данных переменной a |
|
| print('L=' '%0.2f' % (l), 'S=' '%0.2f' %(s)) |
Используются заполнители { } и .format предпочтительнее,
чем txt = 'My name is Timur, I am ' + str(age) |
|
| print(type(a)) |
Соединить все элементы list через =. Если слово написано
целиком, то будут разделены буквы через =! |
|
| txt =
'My name is {}, I am {},'.format(name,age) |
Длина введенной строки макс и мин через ключ key |
|
| print('='.join(a)) |
Оператор in в print |
|
| print(max(a, b, c, key = len)) |
Оператор all (!) |
|
| print("YES" if "суббота" in a or "воскресенье"
in a else "NO") |
Условия в функции print |
|
| print('YES' if all(_ in a for _ in ('@', '.')) else 'NO') |
|
|
| print('Тимур' if str1 < str2 else "" 'Руслан'
if str1 >
str2 else ""
'ничья' if str1
== str2 else "") |
|
| print('ничья' if str1 == str2 else 'Тимур' if str1 + str2 in 'каменьножницыбумагакамень' else 'Руслан') |
List comprehension Списочные выражения |
|
| print('Тимур' if T + R in win else 'ничья' if T == R else 'Руслан') |
if b in dict[a] |
|
| |
|
|
| ВЫВОД |
|
|
| |
|
|
| print(*lst) |
Распаковка спискавывод элементов списка без [скобок] |
|
| print(*list(lst[:][k - 1]), end='', sep='') |
Вывод k-1 (2 напр.) символа во всех эелементах списка OUT:
234 из ['123', '234', '345'] |
|
| print(*list(lst[j][k - 1:k]), end='', sep='') |
Вывод через for j in range каждый j-й элемент |
|
| print('YES' if all(_ in a for _ in ('@', '.')) else 'NO') |
Оператор all in (можно и без all) |
|
| print("YES" if "суббота" in a or "воскресенье"
in a else "NO") |
|
|
| print('='.join(lst)) |
Соединить элементы через = |
|
| print(max(a, b, c, key = len)) |
Макс через ключ len |
|
| |
|
|
| |
|
|
| СПИСОЧНЫЕ ВЫРАЖЕНИЯ и ВВОД |
|
|
| |
|
|
| str =
input().split() |
Ввод списка через пробел, без функции map в случае, если
ввод смешанными данными. Иначе |
|
| lst =
list(map(int, input().split())) |
Ввести список через пробел и преобразовать его в список из
чисел |
|
| a,
b, c = map(int, input().split()) |
Ввод 3-х чисел через пробел через map |
|
| a,
b, c, d = [int(input()) for _ in range(4)] |
Ввод в цикле с присвоением переменным |
|
| a,
b = input()[0], input()[0] |
Забрать 0-й индекс из строки |
|
| lst =
[i[0] for i in input().split()] |
Ввод только первых букв списка |
|
| str =
[input() for i in range(a)] |
Ввод нескольких строк в отдельном окне |
|
| lst =
list(map(int, input().split())) |
Ввести список через пробел и преобразовать его в список из
чисел |
|
| lst =
list(map(int, input())) |
Пример ввода при работе со срезами (фунциональное
програмирование) |
|
| lst =
list(map(chr, list(range(97, 97 + n)))) |
Вывести количество символов Unicode начиная с 'a' |
|
| str =
list(input().upper()) |
Когда нужно изменить регистр введнных символов в списке |
|
| str =
input().rjust(6,'0') |
Когда нужно добавить к строке еще нули до длины в 6. |
|
| lst =
list(map(ord, input())) |
Ввести и преобразовать все символы в ASCII код. Далее
просто sum(n), для сложения элементов |
|
| lst =
sorted(list(map(int, input().split()))) |
Ввести и сразу отсортировать список (метод sorted НЕ
изменяет исходный список (!)) |
|
| lst =
list(reversed(a) |
Вывести элементы списка в обратном порядке. Как и b [::-1]
(!) |
|
| str =
len(input()) |
Преобразовать в длину строку |
|
| count += int(input()) |
Расширенный оператор присваивания. Равносильно: a =
int(input()) count += a |
|
| strings = [input() for i in range(a)] |
Ввод нескольких строк в отдельном окне |
|
| timur, ruslan = (game[input()] for _ in '') |
Собрать 2 ввода в 2 переменные строки |
|
| n =
map(int, input().split()) |
|
|
| [0
for i in range(10)] |
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] |
|
| [i
** 2 for i in range(1, 8)] |
[1, 4, 9, 16, 25, 36, 49] |
|
| [i
* 10 for i in numbers] |
[10, 140, 50, 90, 120] |
|
| [c
* 2 for c in word] |
['HH', 'ee', 'll', 'll', 'oo'] |
|
| [m[0] for m in words] |
['o', 't', 't', 'f', 'f', 's'] |
|
| [i
for i in numbers if i < 10] |
[1, 5, 9] |
|
| [m[0] for m in words if len(m) == 3] |
['o', 't', 's'] |
|
| [i[1:] for i in keywords] |
['ne', 'wo', 'hree',....] |
|
| [i
** 3 for i in range(10, 21)] |
Кубы чисел от 10 до 20 заполнить список |
|
| [len(i) for i in keywords] |
Вывести длины строк списка |
|
| [i
for i in keywords if len(i) >= 5] |
Вывести все строки, длины которых >= 5 |
|
| [i
for i in range(100, 1001) if str(i)[0] == str(i)[-1]] |
Список всех чисел палиндромов от 100 до 1000. |
|
| print(*[i**2 for i in range(1, int(input())+1)], sep='\n') |
Квадрат каждого числа, введенного с клавиатуры |
|
| print(*[int(i) ** 3 for i in input().split()], sep=' ') |
Куб каждого числа, веденного через пробел |
|
| print('\n'.join(input().split())) |
Вывести слова, веденные через пробел в каждой новой строке |
|
| print(*input().split(), sep = '\n') |
Тоже самое |
|
| print(*[int(char) for char in input() if char.isdigit()], sep='') |
Вывести только цифры из введенной в перемешку строки |
|
| print(*[i for i in input() if i.isdigit()], sep="") |
Тоже самое |
|
| list1 = [list(reversed(el)) for el in list1] |
Меняет элементы списка в обратную сторону (см. Reverse()) |
|
| |
|
|
| ЛОГИЧЕСКИЕ ПАТТЕРНЫ |
Duck Typing - Утичный полиморфизм (можно сравнивать любые
типы данных) |
|
| |
|
|
| or |
x or y. (x * y).
0*0=0, 0*1=0, 1*0=0, 1*1=1 |
|
| and |
x and y. (a + y). 0*0=0, 0+1=1, 1+0=1, 1+1=1 |
|
| XOR |
Исключающее ИЛИ (сложение по модулю 2, антиэквиваленция).
0+0=0, 0+1=1, 1+0=1, 1+1=0 (!) |
|
| not |
более низкий приоритет, чем операторы сравнения, так not a
== b интерпретируется как not (a == b). |
|
| x -> y |
Импликация. x следовательно y. Предпосылка (x) и вывод
(y). 0->0=1, 0->1=1, 1->0=0, 1->1=1. Из лжи может следовать
истина |
|
| x =
y |
Эквиваленция (в обе стороны работает. если там ноль и ноль
- значит ноль). 0 0=1, 0 1=0, 1 0=0, 1 1=1. |
|
| x !=
y |
Антиэквиваленция (как XOR). 0 0=0, 0 1=1, 1 0=1, 1 1=0 |
|
| flag = True… flag = (x % 10 == 0) or flag |
Чтобы не потерять значение при единичной сработке (0 or 1
== 1, 1 or 1 == 0). Нашел такой флаг, или нашел ранее... |
|
| max_2(x, max_2(y, z)) |
Большее из 3-х |
|
| кит < кот < котенок |
Лексикографическое сравнение |
|
| help имя_функции |
Man (выдает инфу между ``` ```) |
|
| |
|
|
| |
|
|
| REGEX |
import re. Символ "r" впереди кавычек означает
"сырая строка", т.е. как ее видим в кавычках - это |
|
| |
чтобы избегнуть наращивания знаков экранирования. |
|
| re.match(pattern, string) |
Метод ищет по заданному шаблону в начале строки |
|
| re.search(pattern, string) |
Ищет не только в начале строки |
|
| re.findall(pattern, string) |
Возвращает список всех найденных совпадений. У метода
findall() нет ограничений на поиск в начале или конце строки |
|
| re.split(pattern, string, [maxsplit=0]) |
Метод разделяет строку по заданному шаблону. |
|
| re.sub(pattern, repl, string) |
Ищет шаблон в строке и заменяет его на указанную
подстроку. Если шаблон не найден, строка остается неизменной. |
|
| re.compile(pattern, repl, string) |
Собрать регулярное выражение в отдельный объект, который
может быть использован для поиска. |
|
| . |
Один любой символ, кроме новой строки \n. |
|
| ? |
0 или 1 вхождение шаблона (символа) слева |
|
| + |
1 и более вхождений шаблона (символа) слева |
|
| * |
0 и более вхождений шаблона (символа) слева |
|
| \w |
Любая цифра или буква
и \W — все, кроме буквы или цифры |
|
| \d |
Любая цифра [0-9] и \D — все, кроме цифры |
|
| \s |
Любой пробельный символ и \S — любой
непробельный символ |
|
| \b |
Граница слова |
|
| [ ..
] |
Один из символов в скобках ([^..] — любой
символ, кроме тех, что в скобках) |
|
| \ |
Экранирование специальных символов, ( \. означает
точку или \+ — знак «плюс» ) |
|
| ^ и $ |
Начало и конец строки (последовательности символов)
соответственно |
|
| {n, m} |
От n до m вхождений
({,m} — от 0 до m). Указывается число повторений предыдущего
символа, если 1 параметр |
|
| a|b |
Соответствует a или b. Логическое ИЛИ |
|
| () |
Группирует выражение (символы внутри) и возвращает
найденный текст |
|
| \t, \n, \r |
Символ табуляции, новой строки и возврата каретки
соответственно |
|
| [] |
Заменяет символ из квадратных скобок |
|
| - |
Задает символ, которого не должно быть |
|
| [^
] |
Задает 1 символ из не содержащихся в квадратных скобках |
|
| r"D:\\Downloads.." |
Будет убирать все служебные символы (\n например). Нужно
экранировать D:\\n D:\\t (tab). |
|
| r"""cvc/(**vcvcvcvc///()(/vcv""" |
Экранирование многострочных в print е |
|
| |
|
|
| Python 3.10 |
|
|
| match var: case + без print вывод |
Сопоставление структурного образца вместо if-else |
|
| |
Менеджеры контекста: с
(open ('output.log', 'w') как fout, open ('input.csv') как fin): fout.write (fin.read ()) |
|
| Union [int, float] |
был полностью упрощен до
int | float . def add (a: int | float, b: int | float): return a + b |
|
| |
|
|
| |
|
|
| WHILE |
Условный оператор, цикл с неизвестным числом повторений |
|
| |
|
|
| while x > 0: |
Проверка условия НА ВХОДЕ в цикл |
|
| оператор 1 |
|
|
| if условие: |
|
|
| continue |
Срезать ("круг на стадионе"), цикл и прийти к
началу. |
|
| if условие: |
|
|
| break |
Прервать цикл (минуя else) при выполнении 2-го условия if
(пожарная ситуация, допустим) |
|
| else: |
|
|
| после всех итераций |
Выполнить после всех итераций |
|
| дальнейшая программа |
|
|
| |
|
|
| FOR |
|
|
| |
|
|
| for el
in object: |
Если элемент присутствует в объекте. Можно использовать
el, i, j, k или _. Объектом может быть что угодно, хоть срез. |
|
| инструкция |
|
|
| |
|
|
| for i
in range(start, stop, step): |
При отрицательном шаге писать range(-4, -10, -1), чтобы не
генерировал пустую последовательность (не исполнялся) |
|
| инструкция print(i) |
Выведет от 0 до 10 - произведется 10 итераций цикла. |
|
| print('End') |
Выведет End в любом случае |
|
| |
|
|
| IF |
|
|
| |
|
|
| if условие: |
Если это условие выполняется, то программа дальше уже не
проверяет условия elif |
|
| инструкция |
|
|
| elif условие: |
Иначе если |
|
| инструкция |
|
|
| else: |
|
|
| print('Ни одна проверка не
прошла') |
Выполнится, если все проверки до него будут ложными (!) |
|
| |
|
|
| FLAG |
Сигнальная метка |
|
| |
|
|
| num =
int(input()) |
|
|
| flag = True |
Флаговые переменные могут называться, напримр is_prime |
|
| for i
in range(2, num): |
|
|
| if num % i == 0: |
Если исходное число делится на какое-либо отличное от 1 и
самого себя |
|
| flag = False |
Изменение значения |
|
| if num
== 1: |
|
|
| print('Это единица, она не
простая и не составная') |
|
|
| elif flag == True: |
Изменение значения |
|
| print('Число простое') |
|
|
| else: |
|
|
| print('Число составное') |
|
|
| |
|
|
| |
|
|
| MATH |
|
|
| |
|
|
| int() |
Округляет число в сторону нуля |
|
| round(x) |
Округляет число x до ближайшего целого. Если дробная часть
числа равна 0.5, то число округляется до ближайшего четного числа |
|
| round(x, n) |
Округляет число x до n знаков после точки |
|
| floor(x) |
Округляет число x вниз («пол») |
|
| ceil(x) |
Округляет число x вверх («потолок») |
|
| abs(x) |
Модуль числа x (абсолютная величина) |
|
| |
|
|
| Корни, логарифмы, степени
и факториал |
|
|
| sqrt(x) |
Квадратный корень числа x |
|
| pow(x, n) |
Возведение числа x в степень n |
|
| log(x) |
Натуральный логарифм числа x. Основание натурального
логарифма равно числу e |
|
| log10(x) |
Десятичный логарифм числа x. Основание десятичного
логарифма равно числу 10 |
|
| log(x, b) |
Логарифм числа x по основанию b |
|
| factorial(n) |
Факториал натурального числа n |
|
| |
|
|
| Тригонометрия |
|
|
| degrees(x) |
Преобразует угол x, заданный в радианах, в градусы |
|
| radians(x) |
Преобразует угол x, заданный в градусах, в радианы |
|
| cos(x) |
Косинус угла x, задаваемого в радианах |
|
| sin(x) |
Синус угла x, задаваемого в радианах |
|
| tan(x) |
Тангенс угла x, задаваемого в радианах |
|
| acos(x) |
Возвращает угол в радианах от 00 до \piπ, cos
которого равен x |
|
| asin(x) |
Возвращает угол в радианах от - \frac{\pi}{2}−
2π до \frac{\pi}{2}
2π , sin которого равен x |
|
| atan(x) |
Возвращает угол в радианах от - \frac{\pi}{2}−
2π до \frac{\pi}{2}
2π , tan которого равен x |
|
| atan2(y, x) |
Полярный угол (в радианах) точки с координатами (x, y) |
|
| |
|
|
| Список констант модуля
math (встроенных математические константы): |
|
|
| pi |
Число \pi = 3.141592653589793π=3.141592653589793 |
|
| e |
Число e = 2.718281828459045e= 2.718281828459045 (константа
Эйлера) |
|
| |
|
|
| ЧТЕНИЕ ИЗ ФАЙЛА |
|
|
| |
|
|
| with open("test.txt") as file: |
Диспетчер / менеджер контекста. Автоматически закроет файл
после работы. |
|
| for line in file: |
Считает информацию и выведет по строке (1 цикл = 1 строка) |
|
| print(line) |
|
|
| |
|
|
| file = open('data/text.txt', 'r') |
Не лучший способ, открытия и закрытия файла. |
|
| print(file.read()) |
Выведет на экран все содержимое. |
|
| print(file.read(25)) |
Выведет на экран первые 25 символов. |
|
| file.close() |
|
|
| |
|
|
| ОБРАБОТЧИК ИСКЛЮЧЕНИЙ.
Конструкция «try - except» |
|
|
| |
|
|
| x =
0 |
|
|
| while x == 0: |
|
|
| try: |
|
|
| x = int(input('Введите число: ')) |
|
|
| x += 5 |
|
|
| print(x) |
|
|
| except ValueError: |
Обработка ошибки (ValueError) с выводом принта. Ошибку
можно любую обозначить. |
|
| print('Введите ИМЕННО число: ') |
|
|
| excepr ZeroDivisionError: |
|
|
| print('На ноль делить нельзя') |
Обработка ошибки (ZeroDivisionError) |
|
| else: |
|
|
| print('Если все правильно') |
|
|
| finally: |
|
|
| print('Напечатает в любом
случае') |
|
|
| |
|
|
| DEF |
|
|
| |
|
|
| def max_2(x, y): |
|
|
| if x > y: |
|
|
| return x |
Оператор возврата значения фукнции после проведенного
расчета и ПРЕКРАЩАЕТ ВЫПОЛНЕНИЕ |
|
| return y |
Возращает иное значение |
|
| max_2() |
Вызов функции с параметрами по умолчанию (x, y) |
|
| |
|
|
| * lambda |
Создает объект и возвращает его в виде результата. |
|
| * return |
Передает объект результата вызывающей программе. |
|
| * yield |
Передает объект результата вызывающей программе и
запоминает, где был произведен возврат. |
|
| |
|
|
| ООП |
|
|
| |
|
|
| Функции |
ВНЕ классов, а МЕТОД внутри класса. |
|
| class |
чертеж робота |
|
| Объект |
сам робот |
|
| Наследование |
добавление полезных опций к чертежу робота |
|
| Полиморфизм |
общий функционал |
|
| Инкапсуляция |
защита внутренних данных самого класса |
|
| Поле (в классах) == Переменная (вне классов) |
|
|
| |
|
|
| class Cat: |
|
|
| name = None |
Поле / значение. Навание полей часто совпадает с
парамертрами def (ниже) (!) |
|
| age = None |
Поле / значение |
|
| isHappy = None |
|
|
| |
|
|
| def set_data(self, name, age isHappy) |
def доступен для обоих объектов. self всегда в качестве
1-го параметра чтобы обращаться к значениям (полям) внутри класса |
|
| self.name =
name |
Обращаемся к class Cat через self, в поле name класса Cat
устанавливаем значение, которое передается внутри функции (в скобках) |
|
| self.age = age |
|
|
| self.isHappy = isHappy |
|
|
| |
|
|
| def get_data(self) |
|
|
| print(self.name, 'age:', self.age, '. Happy:', self.isHappy) |
|
|
| |
|
|
| cat1 = Cat() |
Создаем объект cat1 на основе класса Cat |
|
| cat1.set_data('Барсик', 3, True) |
Присвоим все значения в 1 строке |
|
| |
|
|
| cat2 = Cat() |
|
|
| cat2.set_data('Жопен', 2, False) |
|
|
| |
|
|
| МОДУЛИ |
|
|
| |
|
|
| import time as start |
|
|
| print('Time: ', time.time() - start, 's') |
|
|
| |
|
|
| time.sleep(3) |
|
|
| |
|
|
| inport datetime as d |
Можно указать псевдоним |
|
| print(d.datetime.now().time().hour) |
|
|
| |
|
|
| inport sys, os, platform, random, array, math |
Так плохо - в каждой строке по PEP8 |
|
| print(sys.path) |
Путь к текущему проекту |
|
| print(os.name) |
ОС пользователя |
|
| print(platform.system()) |
|
|
| |
|
|
| КОНСТРУКТОРЫ КЛАССОВ |
|
|
| |
|
|
| class Cat: |
|
|
| name = None |
Поле / значение. Навание полей часто совпадает с
парамертрами def (ниже) (!) |
|
| age = None |
Поле / значение |
|
| isHappy = None |
|
|
| |
|
|
| def __init__(self, name, age isHappy) |
Создаем конструктор __init__ |
|
| self.set_data(name, age isHappy) |
Устанавливаем значения |
|
| self.get_data() |
Получаем значения (выводим)? |
|
| |
|
|
| def set_data(self, name, age, isHappy):... |
|
|
| |
|
|
| def get_data(self):... |
|
|
| |
|
|
| cat1 = Cat('Барсик', 3, True) |
Удалили set_data и теперь установка данных происходит в
момент создания самого объекта (!) Объект 1 - и сразу вывод |
|
| cat2 = Cat('Жопен', 2, False) |
Удалили set_data и теперь установка данных происходит в
момент создания самого объекта (!) Объект 2 - и сразу вывод |
|
| |
|
|
| ПЕРЕОПРЕДЕЛЕНИЕ МЕТОДОВ |
|
|
| |
|
|
| class Cat: |
|
|
| name = None |
Поле / значение. Навание полей часто совпадает с
парамертрами def (ниже) (!) |
|
| age = None |
Поле / значение |
|
| isHappy = None |
|
|
| |
|
|
| def __init__(self, name, age isHappy) |
Создаем конструктор __init__ |
|
| self.set_data(name, age isHappy) |
Устанавливаем значения |
|
| self.get_data() |
Получаем значения (выводим)? |
|
| |
|
|
| def set_data(self, name = None, age = None, isHappy = None): |
По умолчанию параметр = None |
|
| self.name = name |
|
|
| self.age = age |
|
|
| self.isHappy
= isHappy |
|
|
| |
|
|
| def get_data(self):... |
|
|
| |
|
|
| cat1 = Cat('Барсик', 3, True) |
Удалили set_data и теперь установка данных происходит в
момент создания самого объекта (!) Объект 1 - и сразу вывод |
|
| cat1.set_data('John', 2, False) |
Переопределение методов |
|
| |
|
|
| cat2 = Cat('Жопен', 2, False) |
Удалили set_data и теперь установка данных происходит в
момент создания самого объекта (!) Объект 2 - и сразу вывод |
|
| |
|
|
| НАСЛЕДОВАНИЕ, ПОЛИМОРФИЗМ,
ИНКАПСУЛЯЦИЯ |
|
|
| |
|
|
| class Building: |
|
|
| year = None |
Поле year в классе |
|
| city = None |
|
|
| |
|
|
| def __init__(self, year, city) |
Конструктор |
|
| self.year = year |
Обращаемся к полю year в классе и будем получать значение
из конструктора |
|
| self.city = city |
|
|
| |
|
|
| def get_info(self) |
|
|
| print('Year:', self.year, '. City:', self.city) |
|
|
| |
|
|
| |
Класс наследник родителя Building |
|
| class School(Buildig): |
Дополнительный функционал для этого класса (к имеющемуся
родителю Building) |
|
| pupils = 0 |
|
|
| |
|
|
| def __init__(self, pupils, year, city): |
Передать данные в конструктор, вызывает superclass (класс
- родитель) |
|
| super(School, self).__init__(year, city) |
|
|
| self.pupils = pupils |
|
|
| |
|
|
| def get_info(self) |
Сначала выводим из метода get_info класса Building [код
для примера и возможностей изменения] |
|
| super().get_info() |
И дополнительно еще выводим |
|
| print('Pupils') |
|
|
| |
Класс - наследник родителя Building |
|
| |
|
|
| class House(Building): |
|
|
| pass |
Класс - наследник родителя School (!) Наследует поля
Building + School [код для примера] |
|
| |
|
|
| |
|
|
| class House2(School): |
Обращаемся к классу School, который наследует от Building |
|
| pass |
Будет выбран метод get_info из класса School (!) а не
Building |
|
| |
|
|
| |
|
|
| school = School(100, 2000, 'Moscow') |
Будет выбран метод get_info из класса Building |
|
| school.get_info() |
|
|
| house = House(2000, 'Moscow') |
|
|
| shop = Shop(2000, 'Moscow') |
Пример инкапсуляции (защиты), которая плохо реализована. |
|
| shop.get_info() |
В Python только вывести нельзя будет. Толку от такой
защиты нет. |
|
| |
|
|
| ДЕКОРАТОРЫ ФУНКЦИЙ |
Нужны для того, чтобы выполнить проверку ДО функции.
Полезны для создания сайтов, или приложений на Android |
|
| |
|
|
| import webbrowser |
|
|
| |
|
|
| def validator(func): |
|
|
| def wrapper(): |
Вложенная функция |
|
| if "." in url: |
|
|
| func() |
|
|
| else: |
|
|
| print('Неверный URL') |
|
|
| return wrapper |
|
|
| |
|
|
| ATvalidator |
Декоратор (можно будет использовать много раз, упомянув
его) |
|
| def open_urt(url): |
|
|
| webbrowser.open(url) |
|
|
| |
|
|
| open_url('https://ya.ru') |
|
|
| |
|
|
| ЛЯМБДА ФУНКЦИЯ |
Анонимная функция (возвратить значение и забыть
переменную). Функциональное програмирование |
|
| |
|
|
| func = lambda x, y: x * y |
Функция принимает на вход параметры, делает вычисление и
возвращает результат без return |
|
| print(*filter(lambda x: x > 0, n)) |
Вместо n в print можно написать выражение для ввода (1
строка). Без переменной вернет bool |
|
| print(*enumerate('abcd')) |
Нумерация элементов
последовательности. Принимает на вход 1 параметр (строку, или список). OUT:
кортеж (0, 'a') (1, 'b') (2, 'c') (3, 'd') |
|
| print(any((True, False, True))) |
Возвращает True, если 1 элемент True |
|
| print(all((True, False, True))) |
Возвращает True, если ALL элемент True |
|
| print(*itertools.perutations({1, 2, 3})) |
Перестановка Выдаст все варианты расположения 1 2 и 3 в
лексикографическом порядке |
|
| |
|
|
| DATA TYPES |
Иерархия типов в ООП |
|
| |
|
|
| 1. Числа
(Numeric Type) |
int, float, complex
– комплексное число |
|
| 2. Словари
(Mapping Types) |
|
|
| 3. Логические переменные (Boolean Type) |
Функции bool(), type(), isinstance() - когда надо получить
иерархичный тип |
|
| 4. Множество
(Set Types) |
Неизменяемый тип данных, где нет повторяющихся элементов |
|
| 5. Последовательность
(Sequence Type) |
Строки, Списки, Кортежи (неизм) |
|
| 6. NoneType |
Тип данных NoneType, Литерал None |
|
| |
|
|
| Функция |
Принимает параметры (аргументы), выполняет какие-то
действия над аргументами и возвращает результат этого действия. |
|
| Метод (*
имя_объекта.имя_метода(параметры) |
Специализированная функция, тесно связанная с объектом. То
есть метод — функция, применяемая к объекту |
|
| |
|
|
| ПЕРЕБОР ЭЛЕМЕНТОВ
ДВУМЕРНОГО СПИСКА |
|
|
| |
|
|
| list1 = [[1, 7, 8], [9, 7, 102], [6, 106, 105], [1, 2, 3]] |
list1 = [[1, 7, 8], [9, 7, 102], [6, 106, 105], [100, 99, 98, 103], [1, 2, 3]] |
|
| maximum = -1 |
maximum = -1 |
|
| for i
in range(len(list1)): |
for el in list1: |
|
| for j in range(len(list1[i])): |
if max(el) > maximum: |
|
| if list1[i][j] > maximum: |
maximum = max(el) |
|
| maximum = list1[i][j] |
|
|
| print(maximum) |
print(maximum) |
|
| |
|
|
| РЕВЕРС ЭЛЕМЕНТОВ СПИСКА |
list1 = [list(reversed(el)) for el in list1] |
|
| |
|
|
| list1 = [[1, 7, 8], [9, 7, 102], [102, 106, 105], [1, 2, 3]] |
list1 = [[1, 7, 8], [9, 7, 102], [102, 106, 105], [1, 2, 3]] |
|
| for i
in range(len(list1)): |
for elem in list1: |
|
| list1[i] = list1[i][::-1] |
elem.reverse() |
|
| |
|
|
| РЕВЬЮ |
|
|
| |
|
|
| * Перебирать все числа от
2 до num - 1 не имеет смысла. |
Достаточно проверить числа от 2 до num // 2 + 1. |
|
| * Правую границу num // 2
+ 1 проверки можно улучшить, если заметить, |
что у любого составного числа есть делитель (отличный от
1), не превосходящий квадратного корня из числа. |
|
| |
Таким образом, имеет смысл перебирать делители от 2 до
sqrt(n + 1), то есть range(2, int(num ** 0.5) + 1). |
|
|
|
|