Just Python
Yopiq kanal
🐍Простое изучение Python. Ссылка: @Portal_v_IT Сотрудничество: @oleginc
Ko'proq ko'rsatish9 696
Obunachilar
-624 soatlar
-217 kun
-7630 kun
Postlar arxiv
9 695
Функции
map(), filter() и reduce() используют, чтобы привнести в Python немного функционального программирования.
Все три из них являются удобными функциями, которые можно заменить на списки или циклы. Но они
обеспечивают более элегантный и краткий подход к некоторым задачам.
1. map() - функция map перебираeт все элементы в данном итеративном объекте и выполняeт функцию, которую мы передали в качестве аргумента для каждого из них.
2. filter() - Подобно map(), filter() принимает объект функции и итерацию и создает новый список. Как следует из названия, filter() формирует новый список, содержащий только элементы, удовлетворяющие определенному условию.
3. reduce() - reduce работает иначе, чем map() и filter(). Он не возвращает новый список, основанный на функции и итерации, которые мы передали.
Вместо этого он возвращает одно значение. На картинке мы приводим пример сложения чисел. Но это самое простейшее. Можно перемножать, возводить в квадрат и многое другое (и не обязательно с числами).
#theory // just python9 695
List Comprehensions
Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику. К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода.
Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решения подобных проблем, что и показывает реализация кода.
Заметьте, что в примере "забывается" старый список и на его месте появляется новый.
#theory // just python
9 695
Создание дробей
Класс Fraction в Python позволяет нам создавать свои экземпляры различными способами.
Мы также можем создать дробь из ее строкового представления.
#theory // just python
9 695
Хотя бы тут будет шанс... получить Айфон
Куб маркетинга запускает розыгрыш призов — три победителя получат:
1.Apple IPhone 15 Pro
2.Apple Airpods Max
3.Apple Watch Series 9.
Для участия необходимо быть подписанным на @cubemark, а после нажать на кнопку "Участвовать"
Трое победителей станут известны 21 февраля, в 20:00, их выберет случайным образом бот Рандомайзер.
Приз отправим в любую точку, где доступна доставка СДЭК.
⚠️ Если кнопка подвисла — вас все равно зарегистрирует, просто выполните условия и нажмите «Участвовать».
9 695
Методы списков list
Списки в Python – упорядоченные последовательности элементов различных типов данных. Списки можно изменять, например, добавлять новые элементы:
1. `list.append(x)` – добавляет элемент, переданный в качестве аргумента, в конец списка. Этот метод является самым простым и распространённым в коде.
2. `list.insert(i, x)` – вставляет элемент в переданную позицию. Первый аргумент означает индекс элемента, перед которым будет добавлено новое значения.
Таким образом,
list.insert(0, x) вставит элемент в начало списка, а list.insert(len(list), x) эквивалентно записи list.append(x).
3. list.extend(iterable) – расширяет список, добавляя все элементы другой коллекции.
#theory // just python9 695
Mодуль cmath
Функции в математическом модуле стандартной библиотеки Python обрабатывают числа с плавающей запятой. Для комплексных чисел библиотека Python содержит модуль
cmath.
Функция polar():
Эта функция возвращает полярное представление декартовой записи комплексного числа. Возвращаемое значение - это кортеж, состоящий из модуля и фазы.
Функция phase():
Эта функция возвращает угол против часовой стрелки между осью x и сегментом, соединяющим точку с исходной точкой. Угол представлен в радианах и находится между π и -π.
Функция rect():
Эта функция возвращает декартово представление комплексного числа, представленного в полярной форме, то есть по модулю и фазе.
Функция sin():
Эта функция возвращает тригонометрическое соотношение синуса фазового угла, представленного в радианах.
#modules // just python9 695
Кортежи в Python
Кортеж - неизменяемый список, группа объектов.
Преимущества перед списками:
- Защита от изменений
- Размер меньше
- Скорость работы
Для создания кортежа используется функция tuple(), использование функции с интегрируемым объектом поместит все его элементы в кортеж.
Кортежи очень полезны, когда нужно передать группу элементов и не нагружать скрипт.
#theory // just python
9 695
Логические значения чисел
В Python при преобразовании чисел к логическим значениям все числа кроме нуля, в том числе и отрицательные - имеют значения True. 0 имеет значение False. Python позволяет проводить логические операции and, or, not над числами.
Функция
bool() преобразует объект в логический. Использовать ее можно с числами.
Логические операции с числами работают согласно таблицам истинности операторов.
#theory // just python9 695
Множества
Множество - группа случайных, не повторяющихся элементов. Использует тот же литерал, что и словарь, но пустое множество нельзя создать используя литерал. Поддерживают операции над множествами.
Функция
set() — формирует множество. При создании удаляются все повторяющиеся элементы.
Функция frozenset() — формирует неизменяемое множество.
#theory // just python9 695
Продвинутые кортежи
С помощью кортежей в Pyhton реализовано множественное присваивание.
Кортежи довольно полезный инструмент. Благодаря им в Python возможно поменять местами значения переменных самым простым способом.
a,b = b,aДля расширенной распаковки кортежа в переменные указываем * перед переменной - в нее распаковывается часть кортежа как список. #theory // just python
9 695
Библиотека JmesPath
Как вы уже заметили работать с json файлами в python очень удобно, ведь они отлично конвертируется в словарь. Также мы разобрали полезную библиотеку json, поэтому еще раз говорить о ней не будем.
Но вот нам надо получить данные из файла. А формат json, как правило имеет множество вложений. Искать что-то нужное можно, но не всегда это удобно.
JmesPath облегчает работу в несколько раз. Вместо
file['a']['b']['c'] можно написать jmespath.search('a.b.c', file). Кажется стало длиннее, но это потому что мы взяли мало элементов, и согласитесь a.b.c выглядит лучше. Даже отредактировать в случае чего будет проще.
#modules // just python9 695
Глубокое (полное) копирование
Глубокая копия создает новую и отдельную копию всего объекта или списка со своим уникальным адресом памяти. Это означает, что любые изменения, внесенные в новую копию объекта или списка, не будут отражаться в исходной. Этот процесс происходит следующим образом: сначала создается новый список или объект, а затем рекурсивно копируются все элементы из исходного в новый.
Короче говоря, оба объекта становятся полностью независимы друг от друга. Это похоже на концепцию передачи по значению в таких языках, как C ++, Java и C #.
#theory // just python
9 695
Библиотека PIL
Очень хорошая библиотека для работы с изображениями. С её помощью можно много что сделать с картинками в одну строчку: повернуть по градусам, уменьшить количество цветов (и вес, соответственно), обрезать, сделать похожим на рисунок карандашом.
Плюс, с помощью этой библиотеки очень просто перебрать все пиксели и получить их RGB цвет. Библиотека нуждается в установке:
install pillow
Для примера напишем простую программу объединяющую два изображения в одно. Для этого оба изображения сделаем прозрачными, будем делать в равном отношении чтобы ничто не выделялось (поэтому умножаем на 0.5), коэффициент можно изменить.
#modules // just python9 695
Станьте Python-разработчиком за 0₽
Зарплата начинающего Python разработчика от 100 000₽, а стоимость обучения на профессию в онлайн-школах от 120 000 до 300 000 рублей.
Получите основы профессии и ключевые навыки за 3 недели практики.
⚠️ Переходите по ссылке и забирайте курс по Python — только до 11 февраля: https://go.2038.pro/8d12bd42505a6330?erid=LdtCK7b7u&m=1
9 695
Потоковый ввод
Вы можете обрабатывать ввод от пользователя потоком. В таком случае для завершения надо воспользоваться специальной "командой" на Windows — Ctrl + D. Запустить потоковый ввод можно через библиотеку sys и метод stdin.
Если требуется получить и тут же обработать строку, то так и пишем:
sys.stdin
Если надо в начале прочитать весь потоковый ввод, а затем обработать, то sys.stdin.readlines()
На картинке представлено 2 варианта.
#theory // just python9 695
Telegram-канал об IT-решениях для бизнеса СофтТех
Друзья, не пропустите важную информацию!
Канал СофтТех рассказывает об IT-решениях для бизнеса и тех, кто их создаёт: ПО и кибербезопасность, облачные технологии, ЦОДы и IoT.
Сами давно читаем и вам советуем подписаться.
Подписаться
#реклама
О рекламодателе
9 695
Правильным ответом является [1, 2]
Происходит так из-за того, что дефолтные параметры хранятся в неизменном кортеже в атрибуте функции
defaults, который создается один раз в момент определения функции.
А для того, чтобы добиться правильного поведения функции, следует воспользоваться ключевым словом None при определении аргументов по-умолчанию.
#theory // just python9 695
Дизайн в FIGMA с нуля. Бесплатный курс + портфолио
Онлайн-программа с наставником и чатом. Дизайн от профессионалов. Доступ 0 руб.
Узнать больше
#реклама
yudaevschool24.online
О рекламодателе
9 695
Ускоряем код с помощью векторизации
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами. Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией
my_func мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize.
По сути, vectorize преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.
#theory // just python9 695
Skillbox дарит 6 месяцев бесплатного обучения интернет-профессиям с гарантией трудоустройства.
Список профессий участвующих в акции:
Интернет-маркетолог (зп 120 000₽)
SMM-маркетолог (зп 150 000₽)
Веб-дизайнер (зп 140 000₽)
Графический дизайнер (зп 80 000₽)
Data Engineer (зп 190 000₽)
Data Analyst (зп 285 000₽)
Java-разработчик (зп 150 000₽)
Разработчик игр на Unity (зп 120 000₽)
Тестировщик ПО (зп 165 000₽)
Приобретение обучения гарантирует трудоустройство, или Skillbox вернет деньги!
⚠️Акция действительна только по ссылкам в посте. Срок окончания акции 15 февраля 2024 года.
