Немного про цифры и юникод
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.
Это влияет на такие функции, как
0, 1, 2, 3, 4, 5, 6, 7, 8, 9 – не единственные символы, которые считаются цифрами. Python следует правилам Юникода и обрабатывает несколько сотен символов как цифры, полный список вот здесь.
Это влияет на такие функции, как
int
, unicode.isdecimal
и даже re.match
. Предупрежден – значит вооружен.Форматирование строк
Привет, в этом посте разберем возможные в Python методы форматирования строк. Все примеры использования можете посмотреть на прикрепленной ниже картинке.
Самый древний и уже редко используемый способ – с помощью оператора
В Python 2.6 появился метод
Начиная с версии Python 3.6, доступны f-строки – свежий и наиболее производительный способ форматирования строк.
Подписывайтесь на канал 👉@pythonofff
Привет, в этом посте разберем возможные в Python методы форматирования строк. Все примеры использования можете посмотреть на прикрепленной ниже картинке.
Самый древний и уже редко используемый способ – с помощью оператора
%
. Написание %s
и %d
зависит от того, что мы туда передаем и что хотим увидеть в итоге, но это уже тема отдельного поста.В Python 2.6 появился метод
.format()
с немного отличающимся синтаксисом от существующего оператора %
. К слову, этот метод активно используется и по сей день, в отличии от его предшественника.Начиная с версии Python 3.6, доступны f-строки – свежий и наиболее производительный способ форматирования строк.
Подписывайтесь на канал 👉@pythonofff
Объединение словарей в python.
Начиная с Python 3.5 можно легко объединить словари. Будьте осторожны, если ключи будут пересекаться, то вы можете потерять данные.
С версии 3.9 объединение становится еще легче. Пример.
Подписывайтесь на канал 👉@pythonofff
Начиная с Python 3.5 можно легко объединить словари. Будьте осторожны, если ключи будут пересекаться, то вы можете потерять данные.
С версии 3.9 объединение становится еще легче. Пример.
Подписывайтесь на канал 👉@pythonofff
Сортировка словаря по значениям
Сортировка данных словаря по значениям ключей, а не по самим ключам, нередко ставит в тупик.
Задача решается довольно просто при помощи аргумента
Подписывайтесь на канал 👉@pythonofff
Сортировка данных словаря по значениям ключей, а не по самим ключам, нередко ставит в тупик.
Задача решается довольно просто при помощи аргумента
key
функции sorted
для указания функции, которая будет вызываться на каждом элементе до сравнения.Подписывайтесь на канал 👉@pythonofff
Списковые включения.
В python можно заменить громоздкие циклы, которые используются для заполнения списков. Самый простой пример использования списковых включений представлен в первом примере.
В примере 2 показано как можно добавить немного математики.
Вы даже можете использовать свои функции, как в примере 3.
Ну и куда без условного оператора? Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
В python можно заменить громоздкие циклы, которые используются для заполнения списков. Самый простой пример использования списковых включений представлен в первом примере.
В примере 2 показано как можно добавить немного математики.
Вы даже можете использовать свои функции, как в примере 3.
Ну и куда без условного оператора? Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Нахождение наиболее частых элементов списка
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком
Метод
Подписывайтесь на канал 👉@pythonofff
#collections #counter
Если необходимо найти несколько наиболее часто повторяющихся значений, лучше воспользоваться счетчиком
Counter
из библиотеки collections
.Метод
Counter.most_common(x)
возвращает x
кортежей, в которых первое значение – элемент, а второе – количество его повторений. Подписывайтесь на канал 👉@pythonofff
#collections #counter
Получаем срез из бесконечного генератора
Допустим, мы хотим получить какой-то конечный список элементов из бесконечного генератора. Что нам для этого понадобится?
Для начала создадим сам генератор
Чтобы получить желаемый срез, импортируем модуль
Подписывайтесь на канал 👉@pythonofff
Допустим, мы хотим получить какой-то конечный список элементов из бесконечного генератора. Что нам для этого понадобится?
Для начала создадим сам генератор
fib
, уже немного знакомый вам по посту, где мы использовали lru_cache
, правда там была рекурсивная функция. Этот генератор позволяет (за неимением другого слова) "генерировать" числа из последовательности Фибоначчи.Чтобы получить желаемый срез, импортируем модуль
itertools
, в котором уже есть удобная функция islice
, позволяющая осуществить срез генератора fib. Подписывайтесь на канал 👉@pythonofff
Функция zip
Функция
Подписывайтесь на канал 👉@pythonofff
#функции #zip
Функция
zip
создаёт итератор, который комбинирует элементы нескольких списков. Это позволяет осуществлять параллельный обход списков в циклах for
или, например, выполнять параллельную сортировку. Подписывайтесь на канал 👉@pythonofff
#функции #zip
Функции all и any.
Названия этих функций говорят сами за себя. Функция
Подписывайтесь на канал 👉@pythonofff
Названия этих функций говорят сами за себя. Функция
all
проверяет все ли элементы последовательности истинны. А функция any
проверяет наличие хотя бы одной истинны. Посмотреть пример в онлайн редакторе. Подписывайтесь на канал 👉@pythonofff
Свап значений переменных.
Бывают ситуации, когда нужно поменять значения переменных местами. И чтобы не захламлять код временными переменными, можно воспользоваться данным способом (внимание на 16 строку).
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Бывают ситуации, когда нужно поменять значения переменных местами. И чтобы не захламлять код временными переменными, можно воспользоваться данным способом (внимание на 16 строку).
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Легкая проверка на анаграммность.
Самым быстрым способом проверить, не являются ли строки анаграммами, будет через класс
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Самым быстрым способом проверить, не являются ли строки анаграммами, будет через класс
Counter
Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Функция reduce
Модуль
Таким образом, в примере выше
Подписывайтесь на канал 👉@pythonofff
#функции #reduce
Модуль
functools
позволяет хорошо раскрыть функциональные возможности Python. Например, в functools
есть интересная функция reduce
, которая позволяет «сжимать» данные, применяя последовательно функцию и запоминая результат.Таким образом, в примере выше
reduce
умножает 1 на 2, затем результат этого умножения на 3 и так далее. Подписывайтесь на канал 👉@pythonofff
#функции #reduce
Вывод значения по умолчанию для отсутствующего ключа словаря
Обращение к несуществующему ключу словаря вызывает исключение. Избежать этого можно, вызывая метод
#codeexample
При создании собственного типа данных на основе словарей обратите внимание на метод
Подписывайтесь на канал 👉@pythonofff
Обращение к несуществующему ключу словаря вызывает исключение. Избежать этого можно, вызывая метод
get
. В указанном случае метод выдает None (по умолчанию) или заданное значение аргумента.#codeexample
d = {'a':1, 'b':2}
print(d.get('c'))
print(d.get('c', 3))
# На выходе:
None
3
При создании собственного типа данных на основе словарей обратите внимание на метод
__missing__
для возвращения аргумента при отсутствии ключа:
class MyDict(dict):
def _missing_(self, key):
return key
D = MyDict(a=1, b=2)
print(D)
print(D['a'])
print(D['c'])
# На выходе:
{'a': 1, 'b': 2}
1
c
Подписывайтесь на канал 👉@pythonofff
Искусственная нейронная сеть с нуля на Python c библиотекой NumPy
В туториале показано, как с нуля построить искусственную нейронную сеть на Python с помощью библиотеки NumPy. Сеть будет классифицировать изображения из датасета Fruit360.
Подробнее
Подписывайтесь на канал 👉@pythonofff
В туториале показано, как с нуля построить искусственную нейронную сеть на Python с помощью библиотеки NumPy. Сеть будет классифицировать изображения из датасета Fruit360.
Подробнее
Подписывайтесь на канал 👉@pythonofff
Транспонирование двумерного массива данных
Чтобы поменять местами строки и столбцы матрицы, созданной с помощью встроенных типов данных, воспользуйтесь функцией
Также, прошу вас реакциями проголосовать какой стиль скриншотов с кодом вам больше нравится. Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Чтобы поменять местами строки и столбцы матрицы, созданной с помощью встроенных типов данных, воспользуйтесь функцией
zip
Также, прошу вас реакциями проголосовать какой стиль скриншотов с кодом вам больше нравится. Посмотреть пример в онлайн редакторе.
Подписывайтесь на канал 👉@pythonofff
Вирус локер на Python и Tkinter
Локер – популярный вид вирусов, который блокирует компьютер, и чаще всего злоумышленники просят что-либо взамен на разблокировку. Обычно локер еще шифрует все файлы на компьютере, но мы такого делать не будем.
Подробнее
Подписывайтесь на канал 👉@pythonofff
Локер – популярный вид вирусов, который блокирует компьютер, и чаще всего злоумышленники просят что-либо взамен на разблокировку. Обычно локер еще шифрует все файлы на компьютере, но мы такого делать не будем.
Подробнее
Подписывайтесь на канал 👉@pythonofff
Назначение функций по условию
Многие из вас знакомы с тернарным оператором, позволяющим записать простое условное выражение с
Интерпретатор выполняет выражение
Но оказывается, тернарный оператор можно использовать не только для переменных, но и для функций.
Подписывайтесь на канал 👉@pythonofff
Многие из вас знакомы с тернарным оператором, позволяющим записать простое условное выражение с
if
:A = Y if X else Z
Интерпретатор выполняет выражение
Y
, если объект X
– True
, и Z
, если X
– False
.Но оказывается, тернарный оператор можно использовать не только для переменных, но и для функций.
Подписывайтесь на канал 👉@pythonofff
Красивый вывод
Мы очень часто отлаживаем код и пользуемся функцией print. Вывод в одну строку не всегда удобен. К примеру, когда мы делаем запрос серверу и получаем огромный json.
Встроенный модуль pprint поможет нам навести красоту. С каждым новым вложением он делает дополнительный отступ и вывод всегда радует глаз.
Вот параметры, которые принимает pprint.pprint:
object - объект форматирования,
stream=None - поток форматированного вывода,
indent=1 - отступ последующего уровня вложенности,
width=80 - ширина экрана печати,
depth=None - показывать уровней вложенности,
compact=False - компактное форматирование,
sort_dicts=True - сортировка словаря перед форматированием,
Мы даже можем переопределить стандартную функцию print написав
Подписывайтесь на канал 👉@pythonofff
Мы очень часто отлаживаем код и пользуемся функцией print. Вывод в одну строку не всегда удобен. К примеру, когда мы делаем запрос серверу и получаем огромный json.
Встроенный модуль pprint поможет нам навести красоту. С каждым новым вложением он делает дополнительный отступ и вывод всегда радует глаз.
Вот параметры, которые принимает pprint.pprint:
object - объект форматирования,
stream=None - поток форматированного вывода,
indent=1 - отступ последующего уровня вложенности,
width=80 - ширина экрана печати,
depth=None - показывать уровней вложенности,
compact=False - компактное форматирование,
sort_dicts=True - сортировка словаря перед форматированием,
Мы даже можем переопределить стандартную функцию print написав
print = pprint.pprint
Выше приведен пример кода. Вы можете самостоятельно поэкспериментировать с модулем. Подписывайтесь на канал 👉@pythonofff
Функция map
Привет, крайне часто начинающие программисты изобретают велосипеды при работе с коллекциями. Избежать часть таких ситуаций поможет знание
На вход принимает два обязательных аргмумента: функция-обработчик и итерируемый объект. Суть
Обратите внимание, в примере на картинке мы не пишем скобки у функции
Подписывайтесь на канал 👉@pythonofff
Привет, крайне часто начинающие программисты изобретают велосипеды при работе с коллекциями. Избежать часть таких ситуаций поможет знание
map
.На вход принимает два обязательных аргмумента: функция-обработчик и итерируемый объект. Суть
map
’a заключается в том, что он применяет переданную функцию к каждому элементу последовательности. А возвращает так называемый map-объект, который в дальнейшем можно конвертировать в обычный список и не только. Обратите внимание, в примере на картинке мы не пишем скобки у функции
add_five
при вызове map
– это означает то, что мы передаем объект функции, а не результат её выполнения. Подписывайтесь на канал 👉@pythonofff
Узнать все о функции
Современные редакторы кода всегда помогут правильно написать функцию, а некоторые даже их параметры. Но что делать, если нужно узнать точно описание функции, методы или прочитать документацию?
Для всех этих действий существует две функции
Очень удобно использовать
С помощью
Подписывайтесь на канал 👉@pythonofff
Современные редакторы кода всегда помогут правильно написать функцию, а некоторые даже их параметры. Но что делать, если нужно узнать точно описание функции, методы или прочитать документацию?
Для всех этих действий существует две функции
dir()
и help()
. Первая возвращает список всех доступных для функции методов. Вторая возвращает текстовую документацию.Очень удобно использовать
dir()
когда не знаешь, как точно пишется метод.С помощью
help()
можно узнать все об объекте и его методах даже без подключения к интернету. Подписывайтесь на канал 👉@pythonofff
Копирование словарей и других объектов
Новички часто допускают такую ошибку при создании копии списка:
Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:
У списка существует специальный метод
Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль
Подписывайтесь на канал 👉@pythonofff
Новички часто допускают такую ошибку при создании копии списка:
lst2 = lst1
При работе с одним из словарей оказывается, что изменяются оба. Почему так происходит?
Об этом — в завтрашнем посте. Пока что расскажу, как этого избежать:
У списка существует специальный метод
copy()
, который нужен как раз для таких случаев. Но подобное работает не всегда! Если имеется множество вложенных списков, то надо сделать полное копирование импортировав модуль
copy
и воспользовавшись методом deepcopy()
. Подписывайтесь на канал 👉@pythonofff