Перечисления enum (Python 3.4+)
Python 3 поддерживает простой способ написания перечислений через класс Enum.
Этот класс можно назвать удобным способом инкапсуляции списка констант, чтобы они не были разбросаны по всему коду без структуры.
Python 3 поддерживает простой способ написания перечислений через класс Enum.
Этот класс можно назвать удобным способом инкапсуляции списка констант, чтобы они не были разбросаны по всему коду без структуры.
from enum import Enum, auto
class Monster(Enum):
ZOMBIE = auto()
WARRIOR = auto()
BEAR = auto()
print(Monster.ZOMBIE) # Monster.ZOMBIE
Как работает FaceID в iPhone X: алгоритм на языке Python
Одна из самых обсуждаемых фишек iPhone X – новый метод разблокировки: FaceID.
В этой статье разобран принцип работы данной технологии.
Одна из самых обсуждаемых фишек iPhone X – новый метод разблокировки: FaceID.
В этой статье разобран принцип работы данной технологии.
Используем объекты вместо True и False — truthy и falsy значения в Python
В Python, как и в других языках, есть логический тип переменных bool, который имеет всего два значения: True (истина) и False (ложь).
Их мы и разберём в сегодняшней статье.
В Python, как и в других языках, есть логический тип переменных bool, который имеет всего два значения: True (истина) и False (ложь).
Их мы и разберём в сегодняшней статье.
Forwarded from Python Lounge: работа и стажировки для программистов
Распознавание лиц и верификация пользователей по ним – будущее или уже существующая реальность? Даже больше, каждый уже может написать свою подобную программу. Это настолько просто, что требуется буквально двадцать строк кода и всего лишь полчаса времени для понимания.
Читать статью
Читать статью
Teletype
Распознание и верификация по лицу с помощью Python
Вся информация представлена исключительно в образовательных целях, бла-бла-бла.
Data Science: машинное обучение, анализ данных и визуализация
Разбираемся, что из себя представляет машинное обучение, как и где его использовать.
Разбираемся, что из себя представляет машинное обучение, как и где его использовать.
10 рецептов машинного обучения от разработчиков Google
В десяти коротких видеоуроках курса машинного обучения от разработчиков Google рассмотрены приемы Machine Learning для начинающих аналитиков данных.
В десяти коротких видеоуроках курса машинного обучения от разработчиков Google рассмотрены приемы Machine Learning для начинающих аналитиков данных.
Делаем проект по машинному обучению на Python. Часть 1
Когда читаешь книгу или слушаешь учебный курс про анализ данных, нередко возникает чувство, что перед тобой какие-то отдельные части картины, которые никак не складываются воедино.
Вас может пугать перспектива сделать следующий шаг и целиком решить какую-то задачу с помощью машинного обучения, но с помощью этой серии статей вы обретёте уверенность в способности решить любую задачу в сфере data science.
Когда читаешь книгу или слушаешь учебный курс про анализ данных, нередко возникает чувство, что перед тобой какие-то отдельные части картины, которые никак не складываются воедино.
Вас может пугать перспектива сделать следующий шаг и целиком решить какую-то задачу с помощью машинного обучения, но с помощью этой серии статей вы обретёте уверенность в способности решить любую задачу в сфере data science.
Делаем проект по машинному обучению на Python. Часть 2
Собрать воедино все части проекта по машинному обучению бывает весьма непросто.
В этой серии статей мы пройдём через все этапы реализации процесса машинного обучения с использованием реальных данных, и узнаем, как сочетаются друг с другом различные методики.
Собрать воедино все части проекта по машинному обучению бывает весьма непросто.
В этой серии статей мы пройдём через все этапы реализации процесса машинного обучения с использованием реальных данных, и узнаем, как сочетаются друг с другом различные методики.
Делаем проект по машинному обучению на Python. Часть 3
Многим не нравится, что модели машинного обучения представляют собой чёрные ящики: мы кладём в них данные и безо всяких объяснений получаем ответы — часто очень точные ответы. В этой статье мы постараемся разобраться, как созданная нами модель делает прогнозы и что она может рассказать о решаемой нами задаче.
Многим не нравится, что модели машинного обучения представляют собой чёрные ящики: мы кладём в них данные и безо всяких объяснений получаем ответы — часто очень точные ответы. В этой статье мы постараемся разобраться, как созданная нами модель делает прогнозы и что она может рассказать о решаемой нами задаче.
Примеры проектов по машинному обучению — 10 лучших
Обучение искусственного интеллекта — задача непростая, но затраченные усилия сполна окупятся невероятными результатами, которых можно достичь благодаря ИИ.
Хотите узнать больше о самых классных проектах по машинному обучению?
Читайте нашу подборку.
Обучение искусственного интеллекта — задача непростая, но затраченные усилия сполна окупятся невероятными результатами, которых можно достичь благодаря ИИ.
Хотите узнать больше о самых классных проектах по машинному обучению?
Читайте нашу подборку.
Публиковать отборные вакансии для программистов и технических специалистов?
Anonymous Poll
67%
Да, давайте самые отборные
33%
Нет
Forwarded from Python Lounge: работа и стажировки для программистов
Python packages
Предположим, вы разрабатываете большое приложение, которое включает в себя множество модулей. Очевидно, что складывать всё в одну папку не просто неудобно, а в некоторых случаях даже нерационально. Создадим для примера модуль
Модуль
В
Предположим, что у нас есть уже какие-то функции в
Точка указывает на то, что мы импортируем модули из этого же пакета, а не откуда-то еще. Если указать без точки или просто
Теперь в
Возможности пакетов и модулей в Python этим не ограничиваются, но для вступления и ознакомления этой информации должно хватить.
Предположим, вы разрабатываете большое приложение, которое включает в себя множество модулей. Очевидно, что складывать всё в одну папку не просто неудобно, а в некоторых случаях даже нерационально. Создадим для примера модуль
main.py
и рядом с ним пакет с модулями (папку с файлами) примерно в таком виде:├── main.py
└── package
├── __init__.py
├── module1.py
└── module2.py
Модуль
__init__.py
нужен для инициализации пакета, а также он вызывается при импорте пакета или модулей из него. Тем не менее, __init__.py
может был пустым, достаточно его присутствия. Простыми словами, такой модуль нужен для того, работать с папкой как с Python-пакетом.В
main.py
мы уже можем импортировать пакет и модули примерно такими способами:import package
from package import module1
import package.module2 as m2
Предположим, что у нас есть уже какие-то функции в
module1.py
и module2.py
. Теперь давайте напишем кое-что в __init__.py
для примера:from .module1 import function1
from . import module2 as m2
variable = 'hello from __init__.py'
Точка указывает на то, что мы импортируем модули из этого же пакета, а не откуда-то еще. Если указать без точки или просто
import module2
, то возникнет исключение.Теперь в
main.py
мы можем выполнить следующие команды:from package import function1
from package import m2
from package import variable
Возможности пакетов и модулей в Python этим не ограничиваются, но для вступления и ознакомления этой информации должно хватить.
Статья рекомендуется всем тем, кто проводит много времени сидя на компьютером, да и не только, потому что поддерживать своё состояние необходимо всем
Здоровье программиста
Здоровье программиста
Telegraph
Здоровье программиста
Думаю, абсолютно все программисты и не только сталкиваются с проблемами, связанными со здоровьем, в связи с работой перед монитором. В этой статье мы разберем самые частые ошибки и приведем рекомендации, как поддерживать своё здоровье даже с сидячим образом…
Сохраняем данные с помощью pickle
Модуль pickle реализует двоичное сохранение объектных структур в Python. Однако будьте осторожнее, pickle не защищен от ошибочных или вредоносных данных. Никогда не извлекайте данные, полученные из ненадежных или не прошедших проверку подлинности источников.
Для начала поробуем сохранить, к примеру, список из различных типов данных.
Данные успешно сохранены, теперь откроем и убедимся в их сохранности.
Что сохранили, то и получили - всё верно. В итоге, pickle - хорошее решение, на случай, когда требуется сохранить что-либо, а на написание полноценной базы данных нет времени.
Модуль pickle реализует двоичное сохранение объектных структур в Python. Однако будьте осторожнее, pickle не защищен от ошибочных или вредоносных данных. Никогда не извлекайте данные, полученные из ненадежных или не прошедших проверку подлинности источников.
Для начала поробуем сохранить, к примеру, список из различных типов данных.
import pickle
x = ['abc', 67, 3.14]
with open('data', 'wb') as file:
pickle.dump(x, file)
Данные успешно сохранены, теперь откроем и убедимся в их сохранности.
with open('data', 'rb') as file:
x = pickle.load(file)
print(x)
# Out: ['abc', 67, 3.14]
Что сохранили, то и получили - всё верно. В итоге, pickle - хорошее решение, на случай, когда требуется сохранить что-либо, а на написание полноценной базы данных нет времени.
Генераторы коллекций
В Python есть специальная конструкция, позволяющая быстрее и удобнее создавать заполненные коллекции на основе имеющихся, при этом применяя какое-либо выражение к каждому элементу.
1. Генератор списка (list comprehension)
В Python есть специальная конструкция, позволяющая быстрее и удобнее создавать заполненные коллекции на основе имеющихся, при этом применяя какое-либо выражение к каждому элементу.
1. Генератор списка (list comprehension)
word = 'hello'
new_list = [c.upper() for c in word]
# ['H', 'E', 'L', 'L', 'O']
2. Генератор множества (set comprehension)elements = [1, 2, 1, 3, 2]
new_set = {n * 0.1 for n in elements}
# {0.1, 0.2, 0.3}
3. Генератор словаря (dictionary comprehension)numbers = {'one': 1, 'two': 2, 'three': 3}
new_dict = {v: k for k, v in numbers.items()}
# {1: 'one', 2: 'two', 3: 'three'}
Enumerate - встроенная функция Python. Ее полезность не может быть сведена в одну строку. Тем не менее, большинство новичков и даже некоторые опытные программисты не знают об этом. Это позволяет нам итерировать что-либо в цикле и иметь автоматический счетчик. Вот пример:
И это еще не все, enumerate также принимает необязательный аргумент, который делает функцию еще более полезной.
Необязательный аргумент позволяет нам указать перечислить, откуда начинать индекс. Вы также можете создавать кортежи, содержащие индекс и элемент списка, используя список. Вот пример:
for counter, value in enumerate(some_list):
print(counter, value)
И это еще не все, enumerate также принимает необязательный аргумент, который делает функцию еще более полезной.
my_list = ['apple', 'banana', 'grapes', 'pear']
for c, value in enumerate(my_list, 1):
print(c, value)
# Output:
# 1 apple
# 2 banana
# 3 grapes
# 4 pear
Необязательный аргумент позволяет нам указать перечислить, откуда начинать индекс. Вы также можете создавать кортежи, содержащие индекс и элемент списка, используя список. Вот пример:
my_list = ['apple', 'banana', 'grapes', 'pear']
counter_list = list(enumerate(my_list, 1))
print(counter_list)
# Output: [(1, 'apple'), (2, 'banana'), (3, 'grapes'), (4, 'pear')]
Академия для наших подписчиков!
Хотите системное ускорение ваших скиллов?
С 20 апреля мы начинаем продвинутый курс по Python, в котором разберём темы, которые сложно найти и изучить самостоятельно.
В курсе вы изучите следующее:
❶ Тонкости функционального программирования
❷ Всё про ООП + метаклассы
❸ Работа с файлами и исключениями
❹ Итераторы, генераторы и декораторы
❺ Потоки и процессы
❻ Асинхронность
❼ Работа с сокетами
🎁 Бонус: правила чистого кода
Цена – 750₽. А также новички могут приобрести доступ к записям по начальному курсу всего за 245₽ (490).
Все вопросы и запись на курс: @a1f20 и @dartrisen.
Хотите системное ускорение ваших скиллов?
С 20 апреля мы начинаем продвинутый курс по Python, в котором разберём темы, которые сложно найти и изучить самостоятельно.
Спустя неделю, все, кто хотел, уже будут заливать новый проект к себе на гитхаб.
Может быть именно на него обратят внимание при приглашении на работу?
В курсе вы изучите следующее:
❶ Тонкости функционального программирования
❷ Всё про ООП + метаклассы
❸ Работа с файлами и исключениями
❹ Итераторы, генераторы и декораторы
❺ Потоки и процессы
❻ Асинхронность
❼ Работа с сокетами
🎁 Бонус: правила чистого кода
Цена – 750₽. А также новички могут приобрести доступ к записям по начальному курсу всего за 245₽ (490).
Все вопросы и запись на курс: @a1f20 и @dartrisen.
Forwarded from Python Lounge: работа и стажировки для программистов
Сортировка пузырьком
В Python уже есть встроенные функции сортировок массивов sort() и .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.
Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит. В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
В Python уже есть встроенные функции сортировок массивов sort() и .sorted(), но достаточно важно самому знать хотя бы несколько реализаций.
Суть алгоритма в том, что совершается несколько проходов по массиву. При проходе последовательно сравниваются пары элементов в массиве и в случае несоответствия выбранному порядку меняются местами. Если пары элементов находятся в верном порядке, то ничего не происходит. В результате первого прохода максимальный элемент окажется в конце, то есть всплывет словно пузырек. Затем все повторяется до того момента пока весь массив не будет отсортирован. Последний проход будет по отсортированному массиву.
def bubble_sort(array):Для наглядности визуальная реализация сортировки представлена ниже. #алгоритм
for i in range(len(array), 0, -1):
for j in range(1, i):
if array[j - 1] > array[j]:
tmp = array[j-1]
array[j-1] = array[j]
array[j] = tmp
return array
Оператор pass делает абсолютно ничего, то есть совсем ничего.
В ходе исполнения данного оператора ничего не происходит, поэтому он может использоваться в качестве некой заглушки в тех местах, где это синтаксически необходимо.
Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.
Ну или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе.
В общем, полезная штука, используйте.
В ходе исполнения данного оператора ничего не происходит, поэтому он может использоваться в качестве некой заглушки в тех местах, где это синтаксически необходимо.
Например, вам надо сделать несколько функций, вы написали def'ы и названия, но сам код еще не успели, однако программу надо запустить и проверить что-то другое. Вот тут и понадобится pass.
def func():
pass
Ну или в конструкции try-except, чтобы просто проигнорировать и никак не обрабатывать ошибку в программе.
try:
any_function()
except:
pass
В общем, полезная штука, используйте.
Изменение списка во время итерации по нему
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
#функция проверки числа на нечетность
del numbers[i] # удаление элемента из списка во время итерации по нему
Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.
К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решение подобных проблем, что и показывает реализация кода ниже:
# функция проверки числа на нечетность
Предположим, что требуется удалить все нечетные числа из списка. Проблема со следующим кодом должна быть довольно очевидной:
odd = lambda x: bool(x % 2)
#функция проверки числа на нечетность
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i in range(10):
if odd(numbers[i]):
del numbers[i] # удаление элемента из списка во время итерации по нему
# Output:
Traceback (most recent call last):
if odd(numbers[i]):
IndexError: list index out of range
Удаление элемента из списка во время его итерации – это проблема, которая хорошо известна любому опытному разработчику.
К счастью, Python включает в себя ряд элегантных парадигм программирования, которые при правильном использовании могут привести к значительному упрощению и оптимизации кода. Одна из таких парадигм – list comprehensions. Генераторы списков часто используют именно для решение подобных проблем, что и показывает реализация кода ниже:
odd = lambda x: bool(x % 2)
# функция проверки числа на нечетность
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers = [n for n in numbers if not odd(n)] # генератор нового списка
print(numbers)
# Output:
[2, 4, 6, 8, 10]