Диктофон в python 🐍
pip install sounddevice
import sounddevice
from scipy.io.wavfile import write
#sample_rate
fs=44100
#Ask to enter the recording time
second = int(input("Enter the Recording Time in second: "))
print("Recording…\n")
record_voice = sounddevice.rec(int(second * fs),samplerate=fs,channels=2)
sounddevice.wait()
write("MyRecording.wav",fs,record_voice)
print("Recording is done Please check you folder to listen recording")
🥰3👍2
Kivy | Разработка приложений.
Kivy – это бесплатная библиотека Python с открытым исходным кодом.
Основное назначение: разработка приложений (с инновационными пользовательскими интерфейсами)
Kivy – это бесплатная библиотека Python с открытым исходным кодом.
Основное назначение: разработка приложений (с инновационными пользовательскими интерфейсами)
😐9👍3
Отладка регулярных выражений в Python
Регулярные выражения — мощный инструмент для работы с текстом, но их отладка может быть сложной. В Python есть встроенная возможность визуализировать регулярное выражение в виде дерева синтаксического анализа, что помогает понять, как интерпретируется шаблон. Для этого используется флаг
Пример использования:
При запуске этого кода интерпретатор выведет подробную информацию о том, как регулярное выражение разбирается и какие элементы в него входят.
Пример проблемы:
Рассмотрим регулярное выражение для поиска тегов
Если в закрывающем теге не экранированы квадратные скобки (например,
Исправленный вариант:
Чтобы исправить проблему, нужно экранировать квадратные скобки:
Преимущества `re.DEBUG`:
1. Визуализация структуры: Позволяет увидеть, как интерпретируется регулярное выражение.
2. Поиск ошибок: Помогает обнаружить синтаксические ошибки или неожиданное поведение.
3. Обучение: Удобен для изучения работы регулярных выражений.
Использование
Регулярные выражения — мощный инструмент для работы с текстом, но их отладка может быть сложной. В Python есть встроенная возможность визуализировать регулярное выражение в виде дерева синтаксического анализа, что помогает понять, как интерпретируется шаблон. Для этого используется флаг
re.DEBUG в методе re.compile. Пример использования:
import re
# Регулярное выражение для поиска тегов <font>
pattern = re.compile(r"<font[^>]*>.*?</font[^>]*>", re.DEBUG)
При запуске этого кода интерпретатор выведет подробную информацию о том, как регулярное выражение разбирается и какие элементы в него входят.
Пример проблемы:
Рассмотрим регулярное выражение для поиска тегов
<font>:pattern = re.compile(r"<font[^>]*>.*?</font[^>]*>", re.DEBUG)
Если в закрывающем теге не экранированы квадратные скобки (например,
</font[^>]*>), интерпретатор воспримет их как группу символов, а не как часть тега. Это может привести к некорректной работе регулярного выражения.Исправленный вариант:
Чтобы исправить проблему, нужно экранировать квадратные скобки:
pattern = re.compile(r"<font[^>]*>.*?</font\[^>\]*>", re.DEBUG)
Преимущества `re.DEBUG`:
1. Визуализация структуры: Позволяет увидеть, как интерпретируется регулярное выражение.
2. Поиск ошибок: Помогает обнаружить синтаксические ошибки или неожиданное поведение.
3. Обучение: Удобен для изучения работы регулярных выражений.
Использование
re.DEBUG — это отличный способ улучшить понимание и отладку сложных регулярных выражений.Справочник Python
Регулярные выражения в Python: модуль re, функции и примеры
В этом уроке вы узнаете о регулярных выражениях Python и о том, как использовать наиболее распространенные функции регулярных выражений.
👍4
Оптимизация списка
Данный скрипт устраняет из списка элементы, которые считаются "ложными" (False, None, 0 и пустая строка ' '). Для этого применяется встроенная функция filter(): если передать None в качестве первого аргумента, она отфильтрует все элементы списка lst, которые не оцениваются как True в булевом контексте.
Данный скрипт устраняет из списка элементы, которые считаются "ложными" (False, None, 0 и пустая строка ' '). Для этого применяется встроенная функция filter(): если передать None в качестве первого аргумента, она отфильтрует все элементы списка lst, которые не оцениваются как True в булевом контексте.
🔥9❤1
Удаление дубликатов в Python с сохранением порядка
Для удаления дубликатов из списка с сохранением порядка элементов можно использовать тип данных
Пример реализации:
Как это работает:
1.
2. Преобразование в список возвращает только уникальные элементы в исходном порядке.
Этот метод особенно полезен, когда важно сохранить последовательность элементов после удаления дубликатов.
Если вы используете Python 3.7 или новее, обычный словарь (
Оба подхода эффективны и удобны для решения задачи.
Для удаления дубликатов из списка с сохранением порядка элементов можно использовать тип данных
OrderedDict из модуля collections. Этот подход позволяет избежать потери порядка, который происходит при преобразовании списка в множество. Пример реализации:
from collections import OrderedDict
# Исходный список с дубликатами
items = [3, 5, 2, 3, 8, 5, 1, 2]
# Удаление дубликатов с сохранением порядка
unique_items = list(OrderedDict.fromkeys(items))
# Результат
print(unique_items) # Вывод: [3, 5, 2, 8, 1]
Как это работает:
1.
OrderedDict.fromkeys(items) создает словарь, где ключи — это уникальные элементы списка, а порядок их добавления сохраняется. 2. Преобразование в список возвращает только уникальные элементы в исходном порядке.
Этот метод особенно полезен, когда важно сохранить последовательность элементов после удаления дубликатов.
Если вы используете Python 3.7 или новее, обычный словарь (
dict) также сохраняет порядок вставки, поэтому можно упростить код: # Для Python 3.7+
unique_items = list(dict.fromkeys(items))
# Результат
print(unique_items) # Вывод: [3, 5, 2, 8, 1]
Оба подхода эффективны и удобны для решения задачи.
👍6
Форматирование вывода с использованием символов
С помощью операторов
- Оператор
- Оператор
- Оператор
Вперёд! Используйте эти возможности для создания резервов и выделения вывода символами!
С помощью операторов
>, < и ^ можно добавлять к выходным значениям дополнительные символы, что упрощает их поиск или выделение среди других данных. - Оператор
< добавляет символы после значения. - Оператор
> добавляет символы перед значением. - Оператор
^ окружает значение символами с обеих сторон. Вперёд! Используйте эти возможности для создания резервов и выделения вывода символами!
❤🔥7🤓4👍3
Метод __repr__
При создании класса или объекта рекомендуется реализовывать "официальное" строковое представление объекта.
Этот метод возвращает строку, которая, в идеале, может быть использована для воссоздания объекта.
Он полезен для отладки и логирования, так как предоставляет четкую и однозначную информацию о состоянии объекта.
При создании класса или объекта рекомендуется реализовывать "официальное" строковое представление объекта.
Этот метод возвращает строку, которая, в идеале, может быть использована для воссоздания объекта.
Он полезен для отладки и логирования, так как предоставляет четкую и однозначную информацию о состоянии объекта.
👍8
Транспонирование двумерного массива
Для замены строк и столбцов в матрице, представленной встроенными типами данных (например, списком списков), можно использовать функцию
Пример реализации:
Если вы часто работаете с матрицами и многомерными массивами, рекомендуется использовать библиотеку NumPy (https://pythononline.ru/question/operatsii-s-matritsami-na-python-modul-numpy). Она предоставляет встроенную функцию
Использование NumPy делает код более читаемым и эффективным, особенно для больших массивов данных.
Для замены строк и столбцов в матрице, представленной встроенными типами данных (например, списком списков), можно использовать функцию
zip. Она эффективно меняет местами строки и столбцы, объединяя элементы по индексам. Пример реализации:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# Транспонирование с помощью zip
transposed_matrix = list(map(list, zip(*matrix)))
# Результат
print(transposed_matrix)
# Вывод: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Если вы часто работаете с матрицами и многомерными массивами, рекомендуется использовать библиотеку NumPy (https://pythononline.ru/question/operatsii-s-matritsami-na-python-modul-numpy). Она предоставляет встроенную функцию
numpy.transpose или метод .T, которые упрощают транспонирование и другие операции с массивами: import numpy as np
matrix = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# Транспонирование с помощью NumPy
transposed_matrix = matrix.T
# Результат
print(transposed_matrix)
# Вывод:
# [[1 4 7]
# [2 5 8]
# [3 6 9]]
Использование NumPy делает код более читаемым и эффективным, особенно для больших массивов данных.
Python онлайн компилятор
Операции с матрицами на Python - модуль Numpy | справочник
В Python мы можем решать различные матричные манипуляции и операции. Модуль Numpy предоставляет различные методы для матричных операций.
👍7
Изучение данных с использованием библиотеки Matplotlib
Сегодня мы рассмотрим библиотеку Matplotlib — мощный инструмент для визуализации информации в Python. Визуализация данных играет ключевую роль в их анализе, а Matplotlib значительно упрощает и делает этот процесс более гибким.
Что представляет собой Matplotlib?
Matplotlib — это библиотека на Python, созданная для построения высококачественных графиков и визуализации данных. Она поддерживает множество типов графиков, таких как линейные, гистограммы, круговые диаграммы, scatter-plot и многие другие. С ее помощью можно тонко настраивать каждый элемент графика, что делает Matplotlib универсальным инструментом как для новичков, так и для профессионалов в области анализа данных.
Сегодня мы рассмотрим библиотеку Matplotlib — мощный инструмент для визуализации информации в Python. Визуализация данных играет ключевую роль в их анализе, а Matplotlib значительно упрощает и делает этот процесс более гибким.
Что представляет собой Matplotlib?
Matplotlib — это библиотека на Python, созданная для построения высококачественных графиков и визуализации данных. Она поддерживает множество типов графиков, таких как линейные, гистограммы, круговые диаграммы, scatter-plot и многие другие. С ее помощью можно тонко настраивать каждый элемент графика, что делает Matplotlib универсальным инструментом как для новичков, так и для профессионалов в области анализа данных.
👍3
Проверка строк на анаграммность
Чтобы определить, являются ли две строки анаграммами (то есть одна строка может быть получена перестановкой букв другой), можно воспользоваться классом
Пример реализации:
Этот метод эффективен и прост в использовании, так как
Чтобы определить, являются ли две строки анаграммами (то есть одна строка может быть получена перестановкой букв другой), можно воспользоваться классом
Counter из модуля collections. Этот класс подсчитывает количество вхождений каждого символа в строке, что позволяет легко сравнить их состав. Пример реализации:
from collections import Counter
def are_anagrams(str1, str2):
# Сравниваем количество символов в обеих строках
return Counter(str1) == Counter(str2)
# Пример использования
print(are_anagrams("listen", "silent")) # Вывод: True
print(are_anagrams("apple", "pale")) # Вывод: False
Этот метод эффективен и прост в использовании, так как
Counter автоматически учитывает частоту каждого символа в строках.👍6👎1😁1
Почему pprint предпочтительнее print
Стандартная функция
В таких случаях на помощь приходит модуль
Использование
Стандартная функция
print() в Python справляется со своей задачей, но при выводе сложных вложенных объектов результат может оказаться нечитабельным и запутанным. В таких случаях на помощь приходит модуль
pprint (pretty print) из стандартной библиотеки Python. Он форматирует вывод, делая его более структурированным и удобным для восприятия. Это особенно полезно при работе с большими словарями, списками или другими сложными структурами данных. Использование
pprint — must-have для любого Python-разработчика, который сталкивается с обработкой и отладкой нестандартных или объемных данных.👍8❤🔥1
Фильтрация списка без использования циклов
Для решения этой задачи можно воспользоваться модулем itertools (документация: https://docs.python.org/3/library/itertools.html). Если у вас есть два списка — один с именами, а другой с идентификаторами (например,
Пример использования:
Этот подход позволяет эффективно фильтровать данные без явного использования циклов.
Для решения этой задачи можно воспользоваться модулем itertools (документация: https://docs.python.org/3/library/itertools.html). Если у вас есть два списка — один с именами, а другой с идентификаторами (например,
names и selectors), — вы можете отфильтровать элементы списка names, оставив только те, которые соответствуют значениям 1 в списке selectors. Пример использования:
import itertools
names = ["Alice", "Bob", "Charlie", "David"]
selectors = [1, 0, 1, 0]
# Фильтрация с помощью itertools.compress
filtered_names = itertools.compress(names, selectors)
# Результат
print(list(filtered_names)) # Вывод: ['Alice', 'Charlie']
Этот подход позволяет эффективно фильтровать данные без явного использования циклов.
Python самоучитель для начинающих
Модуль Itertools в Python на примерах
Itertool – одна из самых удивительных стандартных библиотек Python 3. В этой библиотеке есть самые крутые функции, можно сказать, что это жемчужина языка программирования Python. Python предоставляет отличную документацию по itertools, но в этом руководстве…
👍5👀2
Выражения-генераторы в Python
Выражения-генераторы — это мощный инструмент, который позволяет создавать итераторы без загрузки всей коллекции в память. В отличие от генераторов списков, множеств или словарей, выражения-генераторы возвращают элементы по одному, что особенно полезно при работе с большими объемами данных.
Преимущества выражений-генераторов
-Экономия памяти: элементы генерируются "на лету", что позволяет работать с большими данными.
-Ленивые вычисления: элементы вычисляются только при запросе.
-Универсальность: могут использоваться в любом контексте, где требуется итератор.
Когда использовать?
-Когда объем данных слишком велик для загрузки в память.
-Когда нужно обрабатывать данные по частям.
-Когда требуется ленивое вычисление элементов.
Выражения-генераторы — это мощный инструмент, который позволяет создавать итераторы без загрузки всей коллекции в память. В отличие от генераторов списков, множеств или словарей, выражения-генераторы возвращают элементы по одному, что особенно полезно при работе с большими объемами данных.
Преимущества выражений-генераторов
-Экономия памяти: элементы генерируются "на лету", что позволяет работать с большими данными.
-Ленивые вычисления: элементы вычисляются только при запросе.
-Универсальность: могут использоваться в любом контексте, где требуется итератор.
Когда использовать?
-Когда объем данных слишком велик для загрузки в память.
-Когда нужно обрабатывать данные по частям.
-Когда требуется ленивое вычисление элементов.
❤🔥6
Нравятся ли тебе посты, которые я публикую?
Anonymous Poll
91%
Да, все ок
9%
Да, но сложно
4%
Да, слишком просто все
0%
Нет
1%
Затрудняюсь ответить
Как резать списки без лишних копий? 🐍
Слайсинг — это не просто удобный способ извлечь часть списка, указав начальный и конечный индексы. Это еще и отличный способ сэкономить память! Вместо создания новой копии списка, мы работаем напрямую с исходным объектом. Это особенно важно, когда вы работаете с большими объемами данных — меньше копий, больше производительности.
Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
Слайсинг — это не просто удобный способ извлечь часть списка, указав начальный и конечный индексы. Это еще и отличный способ сэкономить память! Вместо создания новой копии списка, мы работаем напрямую с исходным объектом. Это особенно важно, когда вы работаете с большими объемами данных — меньше копий, больше производительности.
Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
👍6
"Моржовый" оператор
Оператор := позволяет присваивать значения переменной прямо в выражении, после чего сразу же проверяется условие. Очень удобно, когда нужно уменьшить количество строк кода и сделать его более компактным.
P.S. Моржовый оператор (:=) появился в Python 3.8. Его так называют, потому что он похож на глаза и бивни моржа.
Оператор := позволяет присваивать значения переменной прямо в выражении, после чего сразу же проверяется условие. Очень удобно, когда нужно уменьшить количество строк кода и сделать его более компактным.
P.S. Моржовый оператор (:=) появился в Python 3.8. Его так называют, потому что он похож на глаза и бивни моржа.
👍10🔥2
Правдивость объектов в Python
В Python объект считается ложным (False) только в случае, если он пуст. То есть, чтобы проверить, например, строку, кортеж или словарь на "пустоту", достаточно просто использовать его в логическом выражении, не проверяя явно длину. Ну и, конечно, 0 будет False, а все остальные числа — True.
Совет: используйте это поведение для более компактных проверок.
В Python объект считается ложным (False) только в случае, если он пуст. То есть, чтобы проверить, например, строку, кортеж или словарь на "пустоту", достаточно просто использовать его в логическом выражении, не проверяя явно длину. Ну и, конечно, 0 будет False, а все остальные числа — True.
Совет: используйте это поведение для более компактных проверок.
👍7
Проверка на вхождение подстроки в Питон
В Python для проверки, содержится ли элемент в списке, кортеже или словаре, можно использовать конструкцию
Маленький лайфхак: это особенно полезно, когда нужно быстро найти вхождение в длинных строках или списках.
В Python для проверки, содержится ли элемент в списке, кортеже или словаре, можно использовать конструкцию
if item in list. Но эта же проверка отлично работает и для строк! Так что можно легко узнать, есть ли подстрока в строке, с помощью той же простой записи.Маленький лайфхак: это особенно полезно, когда нужно быстро найти вхождение в длинных строках или списках.
👍4
Функция vars() в Питон
Функция
Используйте
Функция
vars() возвращает атрибут __dict__, то есть словарь, содержащий пространство имен для модуля, класса, экземпляра или любого объекта, имеющего атрибут __dict__. Если вызвать vars() без аргументов, она будет работать как locals() и отобразит локальные переменные текущей области видимости.Используйте
vars() для быстрого доступа к атрибутам объектов или для отладки.👍6
This media is not supported in your browser
VIEW IN TELEGRAM
По выходным делюсь полезными приложениями)
CmdF — это терминал-приложение, которое позволяет искать слова прямо внутри видеороликов на YouTube. Для поиска используется библиотека quiet.cpp и нечеткое сопоставление строк, что делает поиск более точным, даже если слова написаны с ошибками.
Это отличный инструмент для тех, кто часто работает с видео на YouTube и хочет быстро находить нужные фрагменты в длинных роликах!
https://github.com/dotvignesh/CmdF
CmdF — это терминал-приложение, которое позволяет искать слова прямо внутри видеороликов на YouTube. Для поиска используется библиотека quiet.cpp и нечеткое сопоставление строк, что делает поиск более точным, даже если слова написаны с ошибками.
Это отличный инструмент для тех, кто часто работает с видео на YouTube и хочет быстро находить нужные фрагменты в длинных роликах!
https://github.com/dotvignesh/CmdF