Математика на Python
Python можно и нужно использовать для математических или научных вычислений. Как его можно использовать? Узнаете в моей статье.
#статья #математика
Python можно и нужно использовать для математических или научных вычислений. Как его можно использовать? Узнаете в моей статье.
#статья #математика
Telegraph
Математические вычисления в Python
Вместо введения. В течение нескольких последних лет экосистема языка Python стремительно развивалась. С помощью Python можно успешно разрабатывать не только веб-приложения и системные утилиты. С его помощью можно работать с нейронными сетями, компьютерным…
5 способов форматирования строк
1. Конкатенация.
Грубый способ форматирования, в котором мы просто склеиваем несколько строк с помощью операции сложения.
2. %-форматирование.
Самый популярный способ, который перешел в Python из языка С. Передавать значения в строку можно через списки и кортежи , а также и с помощью словаря. Во втором случае значения помещаются не по позиции, а в соответствии с именами.
3. Template-строки.
Этот способ появился в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.
4. Форматирование с помощью метода format().
Этот способ появился в Python 3 в качестве замены %-форматированию. Он также поддерживает передачу значений по позиции и по имени.
5. f-строки.
Форматирование, которое появилось в Python 3.6 (PEP 498). Этот способ похож на форматирование с помощью метода format(), но гибче, читабельней и быстрей.
#string
1. Конкатенация.
Грубый способ форматирования, в котором мы просто склеиваем несколько строк с помощью операции сложения.
name = "Дмитрий"
age = 25
print("Меня зовут " + name + ". Мне " + str(age) + " лет.")
# Output: Меня зовут Дмитрий. Мне 25 лет.
2. %-форматирование.
Самый популярный способ, который перешел в Python из языка С. Передавать значения в строку можно через списки и кортежи , а также и с помощью словаря. Во втором случае значения помещаются не по позиции, а в соответствии с именами.
name = "Дмитрий"
age = 25
print("Меня зовут %s. Мне %d лет." % (name, age))
# Output: Меня зовут Дмитрий. Мне 25 лет.
print("Меня зовут %(name)s. Мне %(age)d лет." % {"name": name, "age": age})
# Output: Меня зовут Дмитрий. Мне 25 лет.
3. Template-строки.
Этот способ появился в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.
from string import Template
name = "Дмитрий"
age = 25
s = Template('Меня зовут $name. Мне $age лет.')
print(s.substitute(name=name, age=age))
# Output: Меня зовут Дмитрий. Мне 25 лет.
4. Форматирование с помощью метода format().
Этот способ появился в Python 3 в качестве замены %-форматированию. Он также поддерживает передачу значений по позиции и по имени.
name = "Дмитрий"
age = 25
print("Меня зовут {}. Мне {} лет.".format(name, age)
# Output: Меня зовут Дмитрий. Мне 25 лет.
print("Меня зовут {name} Мне {age} лет.".format(age=age, name=name)
# Output: Меня зовут Дмитрий. Мне 25 лет.
5. f-строки.
Форматирование, которое появилось в Python 3.6 (PEP 498). Этот способ похож на форматирование с помощью метода format(), но гибче, читабельней и быстрей.
name = "Дмитрий"
age = 25
print(f"Меня зовут {name} Мне {age} лет.")
# Output: Меня зовут Дмитрий. Мне 25 лет.
#string
Погружение в f-строки
f-строки делают очень простую вещь — они берут значения переменных, которые есть в текущей области видимости, и подставляют их в строку. В самой строке вам лишь нужно указать имя этой переменной в фигурных скобках.
📌f-строки также поддерживают расширенное форматирование чисел:
📌С помощью f-строк можно форматировать дату без вызова метода strftime():
📌Они поддерживают базовые арифметические операции. Да, прямо в строках:
📌Позволяют обращаться к значениям списков по индексу:
📌А также к элементам словаря по ключу:
📌Причем вы можете использовать как строковые, так и числовые ключи. Точно также как в обычном Python коде:
📌Вы можете вызывать в f-строках методы объектов:
📌А также вызывать функции:
f-строки очень гибкий и мощный инструмент для создания самых разнообразных шаблонов.
Со всеми возможностями f-строк вы можете ознакомится в PEP498.
Не забывайте, что их можно использовать только в версиях Python >= 3.6
#fstring
f-строки делают очень простую вещь — они берут значения переменных, которые есть в текущей области видимости, и подставляют их в строку. В самой строке вам лишь нужно указать имя этой переменной в фигурных скобках.
name = "Олег"
age = 20
print(f"Меня зовут {name} Мне {age} лет.")
# Output: Меня зовут Олег. Мне 20 лет.
📌f-строки также поддерживают расширенное форматирование чисел:
from math import pi
print(f"Значение числа pi: {pi:.2f}")
# Output: Значение числа pi: 3.14
📌С помощью f-строк можно форматировать дату без вызова метода strftime():
from datetime import datetime as dt
now = dt.now()
print(f"Текущее время {now:%d.%m.%Y %H:%M}")
# Output: Текущее время 24.02.2017 15:51
📌Они поддерживают базовые арифметические операции. Да, прямо в строках:
x = 10
y = 5
print(f"{x} x {y} / 2 = {x * y / 2}")
# Output: 10 x 5 / 2 = 25.0
📌Позволяют обращаться к значениям списков по индексу:
planets = ["Меркурий", "Венера", "Земля", "Марс"]
print(f"Мы живем на планете {planets[2]}")
# Output: Мы живем на планете Земля
📌А также к элементам словаря по ключу:
planet = {"name": "Земля", "radius": 6378000}
print(f"Планета {planet['name']}. Радиус {planet['radius']/1000} км.")
# Output: Планета Земля. Радиус 6378.0 км.📌Причем вы можете использовать как строковые, так и числовые ключи. Точно также как в обычном Python коде:
digits = {0: 'ноль', 'one': 'один'}
print(f"0 - {digits[0]}, 1 - {digits['one']}")
# Output: 0 - ноль, 1 - один📌Вы можете вызывать в f-строках методы объектов:
name = "Олег"
print(f"Имя: {name.upper()}")
# Output: Имя: ОЛЕГ
📌А также вызывать функции:
print(f"13 / 3 = {round(13/3)}")
# Output: 13 / 3 = 4f-строки очень гибкий и мощный инструмент для создания самых разнообразных шаблонов.
Со всеми возможностями f-строк вы можете ознакомится в PEP498.
Не забывайте, что их можно использовать только в версиях Python >= 3.6
#fstring
Что выведет функция print?
class A:
pass
class B:
value = 1
class C:
value = 3
class D(A, B, C):
def __str__(self):
return str(self.value)
print(D())
В этом простом примере Python ищет необходимый атрибут в родительских классах, поскольку они перечислены слева направо. То есть, Python начнет с просмотра
Таким образом, правильный ответ — 1.
📌Более подробно об этом можно почитать тут (MRO).
A и, если A не имеет атрибута, то будет смотреть на B.Таким образом, правильный ответ — 1.
📌Более подробно об этом можно почитать тут (MRO).
Что такое itertools?
Данная библиотека является сборником полезных итераторов, повышающих эффективность работы с циклами и генераторами последовательностей объектов. Это достигается за счет лучшего управления памятью в программе, быстрого выполнения подключаемых функций, а также сокращения и упрощения кода.
При помощи простых итераций, действующих в цикле, можно наполнять контейнеры данных неким содержимым, а пользуясь генераторами списков — задавать более сложные условия для их формирования. Подключаемый модуль
Ранее мы уже немного касались
Данная библиотека является сборником полезных итераторов, повышающих эффективность работы с циклами и генераторами последовательностей объектов. Это достигается за счет лучшего управления памятью в программе, быстрого выполнения подключаемых функций, а также сокращения и упрощения кода.
При помощи простых итераций, действующих в цикле, можно наполнять контейнеры данных неким содержимым, а пользуясь генераторами списков — задавать более сложные условия для их формирования. Подключаемый модуль
itertools позволяет расширить данный функционал.Ранее мы уже немного касались
itertools (tee, islice, permutations) а так же когда разбирали различия между генераторами и итераторами (здесь первая часть).Chains 🔗
itertools.chain
Возвращает по одному элементу из первого итератора, потом из второго, до тех пор, пока итераторы не кончатся. Итоговый массив содержит все элементы данных итераторов.
📌Пример использования:
itertools.chain.from_iterable
Работает аналогично chain. Также выполняется объединение списков. Отличие заключается в том, что аргумент только один – вложенный список со списками, которые надо объединить.
📌Пример использования:
#iterators #chain
itertools.chain
Возвращает по одному элементу из первого итератора, потом из второго, до тех пор, пока итераторы не кончатся. Итоговый массив содержит все элементы данных итераторов.
📌Пример использования:
from itertools import chain
print(list(chain(['a', 'b', 'c'], range(4))))
# Output: ['a', 'b', 'c', 0, 1, 2, 3]
itertools.chain.from_iterable
Работает аналогично chain. Также выполняется объединение списков. Отличие заключается в том, что аргумент только один – вложенный список со списками, которые надо объединить.
📌Пример использования:
from itertools import chain
print(list(chain.from_iterable([['a', 'b', 'c'], range(4)])))
# Output: ['a', 'b', 'c', 0, 1, 2, 3]
#iterators #chain
Небольшой опрос, чтобы лучше понимать свою аудиторию.
Final Results
16%
Занимаюсь анализом данных
14%
Занимаюсь веб-программированием
4%
Занимаюсь тестированием/автотестированием
3%
Занимаюсь написанием ботов в телеграм
33%
Я студент, учу программирование
14%
Я школьник, учу программирование
17%
Не программист, подписался просто из интереса
This media is not supported in your browser
VIEW IN TELEGRAM
График популярности языков программирования, основанная на количестве заданных на Stack Overflow вопросов по соответствующему языку.
В целом, приятно за возросший интерес к языку Python. Но оно и понятно, в data science и machine learning без него никуда.
Все еще сомневаетесь, что пишете на лучшем языке в мире?
В целом, приятно за возросший интерес к языку Python. Но оно и понятно, в data science и machine learning без него никуда.
Все еще сомневаетесь, что пишете на лучшем языке в мире?
Что выведет функция?
upd: вместо None я имел в виду пустой словарь {}.
def func(x, *y, **z):
print(z)
func(1,2,3)
upd: вместо None я имел в виду пустой словарь {}.
Hello World
Что выведет функция? def func(x, *y, **z): print(z) func(1,2,3) upd: вместо None я имел в виду пустой словарь {}.
Функция выведет пустой словарь {}
В момент инициализации функции, Python создает пустой словарь. Поскольку никаких именованных параметров не было передано в функцию (по сути мы передали 1 в x и (2, 3) в y), Python распечатает именно пустой словарь.
В момент инициализации функции, Python создает пустой словарь. Поскольку никаких именованных параметров не было передано в функцию (по сути мы передали 1 в x и (2, 3) в y), Python распечатает именно пустой словарь.
Forwarded from Python Lounge: работа и стажировки для программистов
Распознавание лиц и верификация пользователей по ним – будущее или уже существующая реальность? Даже больше, каждый уже может написать свою подобную программу. Это настолько просто, что требуется буквально двадцать строк кода и всего лишь полчаса времени для понимания.
Читать статью
Читать статью
Teletype
Распознание и верификация по лицу с помощью Python
Вся информация представлена исключительно в образовательных целях, бла-бла-бла.
This media is not supported in your browser
VIEW IN TELEGRAM
Streamlit позволяет создавать приложения для проектов машинного обучения с обманчиво простыми скриптами Python. Он поддерживает горячую замену, поэтому ваши обновления обновляются в процессе редактирования и сохранения файла. Все, что вам нужно, это ваш любимый редактор и браузер. Посмотрите на Streamlit в действии.
Python имеет ужасную репутацию, когда речь идет о возможности параллельных вычислений. Не обращая внимания на типичные рассуждения о его потоках и GIL (который обычно нормально работает), реальная проблема многопоточности Python не техническая, а педагогическая. Распространенные руководства о библиотеках threading и multiprocessing в целом неплохие, но тяжеловаты для понимания.
Именно по этой причине я написал статью в которой рассматриваются возможности multiprocessing, доступные каждому.
Читать статью
Именно по этой причине я написал статью в которой рассматриваются возможности multiprocessing, доступные каждому.
Читать статью
Telegraph
Multiprocessing в Python
Немного истории Модуль multiprocessing изначально был добавлен в Python 2.6. Этот модуль позволяет создавать процессы таким же образом, как при создании потоков при помощи модуля threading.
В общем, мы создали объединенный чат нескольких каналов для взаимопомощи в программировании и просто общения – @python_chat_ru
Wolfram for Python
Может быть, кому то из вас это будет полезно. Не так давно появилась библиотека, которая позволит напрямую и эффективно вызывать Wolfram Language из языка Python.
Я, например, иногда использую вольфрам для символьных вычислений.
WolframClientForPython под лицензией MIT, так что вы можете использовать ее по своему усмотрению.
А вот и оригинал статьи из блога вольфрам, где рассказывается как можно за несколько строк кода написать алгоритм обнаружения лиц.
Читать статью
Может быть, кому то из вас это будет полезно. Не так давно появилась библиотека, которая позволит напрямую и эффективно вызывать Wolfram Language из языка Python.
Я, например, иногда использую вольфрам для символьных вычислений.
WolframClientForPython под лицензией MIT, так что вы можете использовать ее по своему усмотрению.
А вот и оригинал статьи из блога вольфрам, где рассказывается как можно за несколько строк кода написать алгоритм обнаружения лиц.
Читать статью
GitHub
GitHub - WolframResearch/WolframClientForPython: Call Wolfram Language functions from Python
Call Wolfram Language functions from Python. Contribute to WolframResearch/WolframClientForPython development by creating an account on GitHub.
Комбинация значений
Мы уже кратко касались некоторых полезных функций в itertools. Теперь поговорим о функциях-итераторах, позволяющих комбинировать различные значения, меняя местами их составляющие. К их числу относятся такие методы как:
📌combinations;
📌combinations_with_replacement;
📌permutations;
📌product.
combinations
Первая функция по комбинированию отдельных элементов последовательности принимает два аргумента. Первый позволяет задать определенный объект, а второй – количество значений, которые будут присутствовать в каждом новом отрезке. В данном примере демонстрируется работа функции combinations библиотеки itertools при создании списка.
Как видно из кода, метод получает строку DOG, которая впоследствии раскладывается на отдельные символы. Далее происходит группировка по 2 буквы так, чтобы каждая новая выборка отличалась от всех существующих. Функция print выводит полученный список data на экран, отображая все сформированные пары символов D, O, G.
combinations_with_replacement
Более продвинутая вариация предыдущего итератора предоставляет программе возможность делать выборку из отдельных элементов с учетом их порядка. В следующем образце кода показано использование combinations_with_replacement с уже известными аргументами.
В результате работы программы, на экране отобразилось несколько групп элементов, не повторяющих порядок друг друга. При этом вполне могут использоваться одинаковые объекты, если их общее расположение не совпадает с предыдущими выборками.
permutations
Работа функции permutations модуля itertools в Python похожа на комбинацию со сменой порядка. Однако в ней не допускается размещение идентичных элементов в одной группе. Ниже приведен код, демонстрирующий поведение и результат выполнения этого метода в цикле for.
На выходе программа отображает несколько пар значений, так как в качестве второго аргумента функция получила 2. Важно заметить, что каждая новая выборка отличается от всех предыдущих только порядком, а общая последовательность может включать в себя группы, состоящие из одних и тех же значений, просто сменивших расположение.
product
Последний из комбинационных итераторов получает в качестве параметра массив данных, состоящий из нескольких групп значений. Функция product библиотеки itertools в Python 3 позволяет получить из введенной последовательности чисел или символов новую совокупность групп во всех возможных вариациях. Следующий пример показывает исполнение этого метода.
Таким образом, получается новая последовательность data, вмещающая в себя все возможные комбинации значений, полученных из начального списка.
#itertools #combinations
Мы уже кратко касались некоторых полезных функций в itertools. Теперь поговорим о функциях-итераторах, позволяющих комбинировать различные значения, меняя местами их составляющие. К их числу относятся такие методы как:
📌combinations;
📌combinations_with_replacement;
📌permutations;
📌product.
combinations
Первая функция по комбинированию отдельных элементов последовательности принимает два аргумента. Первый позволяет задать определенный объект, а второй – количество значений, которые будут присутствовать в каждом новом отрезке. В данном примере демонстрируется работа функции combinations библиотеки itertools при создании списка.
from itertools import combinations
data = list(combinations('DOG', 2))
print(data)
# Output: [('D', 'O'), ('D', 'G'), ('O', 'G')]
Как видно из кода, метод получает строку DOG, которая впоследствии раскладывается на отдельные символы. Далее происходит группировка по 2 буквы так, чтобы каждая новая выборка отличалась от всех существующих. Функция print выводит полученный список data на экран, отображая все сформированные пары символов D, O, G.
combinations_with_replacement
Более продвинутая вариация предыдущего итератора предоставляет программе возможность делать выборку из отдельных элементов с учетом их порядка. В следующем образце кода показано использование combinations_with_replacement с уже известными аргументами.
from itertools import combinations_with_replacement
for i in combinations_with_replacement('DOG', 2):
print(''.join(i))
# Output:
DD
DO
DG
OO
OG
GG
В результате работы программы, на экране отобразилось несколько групп элементов, не повторяющих порядок друг друга. При этом вполне могут использоваться одинаковые объекты, если их общее расположение не совпадает с предыдущими выборками.
permutations
Работа функции permutations модуля itertools в Python похожа на комбинацию со сменой порядка. Однако в ней не допускается размещение идентичных элементов в одной группе. Ниже приведен код, демонстрирующий поведение и результат выполнения этого метода в цикле for.
from itertools import permutations
for i in permutations('DOG', 2):
print(''.join(i))
# Output:
DO
DG
OD
OG
GD
GO
На выходе программа отображает несколько пар значений, так как в качестве второго аргумента функция получила 2. Важно заметить, что каждая новая выборка отличается от всех предыдущих только порядком, а общая последовательность может включать в себя группы, состоящие из одних и тех же значений, просто сменивших расположение.
product
Последний из комбинационных итераторов получает в качестве параметра массив данных, состоящий из нескольких групп значений. Функция product библиотеки itertools в Python 3 позволяет получить из введенной последовательности чисел или символов новую совокупность групп во всех возможных вариациях. Следующий пример показывает исполнение этого метода.
from itertools import product
data = list(product((0, 1), (2, 3)))
print(data)
# Output: [(0, 2), (0, 3), (1, 2), (1, 3)]
Таким образом, получается новая последовательность data, вмещающая в себя все возможные комбинации значений, полученных из начального списка.
#itertools #combinations
Ваше мнение
Final Results
38%
Слишком длинный пост, лучше писать такое статьей
62%
Нормально для поста
Мой коллега написал бота, который отправляет котиков и собачек. Советую ознакомиться с ним, поскольку даже в таком простейшем боте есть интересные вещи, например админская панель, позволяющая делать масс-рассылки. К тому же, код заботливо выложен на гитхаб.
Кстати, это только первая часть нашего с ним общего проекта. Но об этом уже немного позже.
Кстати, это только первая часть нашего с ним общего проекта. Но об этом уже немного позже.
Forwarded from Dank Code
Вероятнее всего, многие уже видели моего нового бота @DailyAnimalsBot, но всё же скидываю и сюда. Правда он умеет только отправлять котиков и собачек, но я также вкрутил туда несколько приколюх типа поддержка инлайн режима, смена языка и еще кое-что.
Весь код выложил в открытый доступ, можете посмотреть и поставить звездочку на гитхабе :)
P. S. Это не реклама, это просто мой небольшой проект.
Весь код выложил в открытый доступ, можете посмотреть и поставить звездочку на гитхабе :)
P. S. Это не реклама, это просто мой небольшой проект.
Новая рубрика
Недавно подписчица прислала мне код, и попросила опубликовать. И я тут подумал, что вообще говоря давно хотел создать новую рубрику с вашими работами.
Код создаёт на рабочем столе много папок, потом режет на квадратики заданного размера исходную картинку, превращает все в иконки, и цепляет на созданные папки на рабочем столе. Картинка может быть любой.
То есть, он создает изначально несобранную мозаику, а потом вы можете ее собрать.
Вот гитхаб с кодом:
Посмотреть код
Обратите внимание, код написан специально под windows
Да, теперь свои работы вы можете прислать мне, и я опубликую самое интересное.
Недавно подписчица прислала мне код, и попросила опубликовать. И я тут подумал, что вообще говоря давно хотел создать новую рубрику с вашими работами.
Код создаёт на рабочем столе много папок, потом режет на квадратики заданного размера исходную картинку, превращает все в иконки, и цепляет на созданные папки на рабочем столе. Картинка может быть любой.
То есть, он создает изначально несобранную мозаику, а потом вы можете ее собрать.
Вот гитхаб с кодом:
Посмотреть код
Обратите внимание, код написан специально под windows
Да, теперь свои работы вы можете прислать мне, и я опубликую самое интересное.
GitHub
GitHub - nikelborm/puzzle: Create awesome mosaic on your Windows desktop using folders!
Create awesome mosaic on your Windows desktop using folders! - nikelborm/puzzle