Программистика
Canal cerrado
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
Mostrar más5 764
Suscriptores
-424 horas
+57 días
-8730 días
Archivo de publicaciones
5 764
💻 Вопрос из собеседования: Что такое поверхностная копия?
Поверхностная копия используется при создании нового типа экземпляра и сохраняет значения, скопированные в новом. Также она используется для копирования ссылочных указателей. Это означает, что когда мы копируем объект в другую переменную, он будет привязан.
list_example = [1,2,3,4,5]
another_list = list_example
another_list[0] = 100
print(list_example)
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
5 764
👀 Книга: Программирование на языке высокого уровня Python
⏺ЗНАКОМСТВО С ЯЗЫКОМ ПРОГРАММИРОВАНИЯ PYTHON
⏺ИНТЕЛЛЕКТУАЛЬНЫЙ КАЛЬКУЛЯТОР
⏺ПЕРЕМЕННЫЕ
⏺ФУНКЦИИ
⏺ПРОГРАММЫ В ОТДЕЛЬНОМ ФАЙЛЕ
⏺ОБЛАСТЬ ВИДИМОСТИ ПЕРЕМЕННЫХ
И многое другое
@programistica // #doc
5 764
SQL теперь в телеграм!
SQL — главный язык программирования баз данных. Базы данных есть везде: от маленького интернет-магазина до социальной сети. Sql будет легко выучить, если подписаться на официальный русскоязычный канал. Это первоисточник всего, что появляется в платных курсах и остальных ресурсах. Стоит подписаться!
5 764
🖼️ Библиотека Python: PyFlux
PyFlux — это библиотека для Python, предназначенная для моделирования временных рядов, которая предлагает широкий спектр статистических и эконометрических моделей для анализа и прогнозирования данных, изменяющихся во времени. Она включает в себя такие инструменты, как ARIMA, GARCH и байесовские модели, делая PyFlux мощным решением для аналитиков и исследователей, работающих с временными рядами в различных областях.
⚙️ Пример использования
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
# Генерируем искусственные данные временного ряда
np.random.seed(42)
data = np.random.normal(0, 1, 100).cumsum()
# Используем модель ARIMA
model = sm.tsa.ARIMA(data, order=(2, 1, 2)) # параметры (p,d,q) для ARIMA модели
results = model.fit()
# Выводим сводку по модели
print(results.summary())
# Строим график исходных данных и прогнозируемых значений
plt.figure(figsize=(10, 6))
plt.plot(data, label='Исходные данные')
plt.plot(results.fittedvalues, color='red', label='Прогнозируемые значения')
plt.legend()
plt.show()
В этом примере мы сначала генерируем искусственный временной ряд с помощью накопления случайных значений. Затем мы применяем к этим данным модель ARIMA с порядком (2, 1, 2), что означает 2 авторегрессионных компонента, 1 порядок интегрирования (разности для достижения стационарности) и 2 скользящих средних компонента. После обучения модели выводится сводка с её параметрами, а также строится график, на котором сравниваются исходные данные и прогнозируемые значения модели.
✔️ Установка
pip install statsmodels
⛓ Ссылка на документацию
@programistica // #Library5 764
💻 Вопрос из собеседования: Что такое абстракции у словаря и списка в Python?
Они представляют собой синтаксические конструкции, облегчающие создание словаря или списка на основе существующих итеруемых. Создание происходит циклом внутри самого объекта.
#Абстракция словаря
dict_comprehension = {key:val for key, val in emumerate('sample')}
print(dict_comprehension)
#Абстракция списка
list_comprehension = [i for i in range(5)]
print(list_comprehension)
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
5 764
Мини-курс для тех, кто хочет прокачать свои навыки в направлении Python-разработки и добавить 4 крутых проекта в портфолио.
Регистрация по ссылке: https://epic.st/nnsNH?erid=2VtzqxKxJn3
Кому будет полезен мини-курс:
— Тем, кто уже знает основы Python и хочет дополнить базовые знания крутой практикой
— Тем, кто жаждет карьерных перемен
— Тем, кто хочет попасть в IT, но сомневается
Спикер — Анастасия Борнева, руководитель направления по исследованию данных в «Сбере».
Что будете делать:
— Создадите бота для Telegram, который умеет переводить голос в текст
— Сделаете бота умнее — научите его обрабатывать фотографии
— Узнаете, как парсить сайты — собирать информацию с веб-страниц в удобные таблицы
— Напишете сайт с помощью инструмента Flask
В финале будет прямой эфир, где вы сможете обсудить практические работы и задать вопросы спикеру.
Все участники получат в подарок полезные материалы с чек-листами, гайдами и другими бонусами.
Откройте новые возможности!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880.
5 764
⚙️ Алгоритм Сортировка подсчетом (Counting Sort)
Сортировка подсчетом — это алгоритм сортировки, который сортирует элементы коллекции путем подсчета количества объектов с различными ключевыми значениями. Это несравнительный алгоритм сортировки, что означает, что он не сравнивает элементы напрямую для определения их порядка. Алгоритм особенно эффективен, когда диапазон возможных элементов не слишком велик по сравнению с количеством элементов для сортировки.
Принцип работы
Сортировка подсчетом работает следующим образом:
⏺Подсчет: Определите количество каждого уникального элемента в исходном массиве.
⏺Агрегация: Преобразуйте подсчеты так, чтобы каждый элемент подсчета указывал на позицию в отсортированном массиве.
⏺Распределение: Разместите каждый элемент из исходного массива на правильную позицию в отсортированном массиве, используя данные агрегированных подсчетов.
Пример
Предположим, у нас есть массив [4, 2, 2, 8, 3, 3, 1], и мы хотим его отсортировать.
⏺Подсчет: Сначала подсчитаем количество каждого элемента. Для нашего массива:
1: 1 раз
2: 2 раза
3: 2 раза
4: 1 раз
8: 1 раз
⏺Агрегация: Затем мы агрегируем подсчеты. Каждое значение подсчета складывается с предыдущим. Это дает нам позиции в отсортированном массиве:
1: 1
2: 1 + 2 = 3
3: 3 + 2 = 5
4: 5 + 1 = 6
8: 6 + 1 = 7
⏺Распределение: Наконец, мы распределяем элементы в новом массиве на основе агрегированных подсчетов:
[1, 2, 2, 3, 3, 4, 8]
Теперь давайте создадим скрипт на python, который продемонстрирует этот прекрасный алгоритм.
def counting_sort(arr):
# Находим максимальное значение в массиве
max_val = max(arr)
# Создаем массив подсчета, инициализируем его нулями
count_arr = [0] * (max_val + 1)
# Подсчитываем количество каждого элемента и записываем в count_arr
for item in arr:
count_arr[item] += 1
# Переписываем arr, используя информацию из count_arr
index = 0
for i in range(len(count_arr)):
while count_arr[i] > 0:
arr[index] = i
index += 1
count_arr[i] -= 1
return arr
# Пример использования
arr = [4, 2, 2, 8, 3, 3, 1]
sorted_arr = counting_sort(arr)
print("Отсортированный массив:", sorted_arr)
Сложность и применение
Временная сложность сортировки подсчетом в общем случае составляет O(n + k), где n — количество элементов для сортировки, а k — диапазон значений этих элементов. Пространственная сложность алгоритма — O(k).
Сортировка подсчетом наиболее эффективна, когда диапазон значений (k) не слишком велик по сравнению с n. Она часто используется как подалгоритм в более сложных алгоритмах сортировки, таких как сортировка цифрами (Radix Sort).
Преимущества и недостатки
➡️Преимущества:
⏺Быстрая сортировка для небольшого диапазона значений.
⏺Стабильна: сохраняет относительный порядок равных элементов.
⏺Несравнительная: не зависит от сравнения элементов.
➡️Недостатки:
⏺Неэффективна для больших диапазонов значений.
⏺Требует дополнительной памяти для подсчетов.
Заключение
Сортировка подсчетом представляет собой мощный и эффективный алгоритм для определенных сценариев сортировки, особенно когда диапазон значений элементов ограничен. Она иллюстрирует важный принцип алгоритмической оптимизации: использование дополнительной информации о данных (в данном случае о диапазоне значений) для улучшения производительности.
@programistica // #article5 764
🖼️ Библиотека Python: PyO3
PyO3 — это мощная библиотека, которая позволяет разработчикам создавать расширения для Python на языке Rust, обеспечивая высокую производительность и безопасность типов, характерные для Rust. Это делает возможным писать критически важный по производительности код на Rust и легко интегрировать его в Python-проекты, сочетая лучшее из обоих миров: скорость и безопасность Rust с гибкостью и широкими возможностями Python.
Чтобы продемонстрировать работу PyO3, необходимо иметь установленный Rust и Cargo, а также Python. В этом примере мы создадим простую функцию на Rust, которая будет вызываться из Python. Эта функция будет принимать строку и возвращать ее длину.
⏺Установите PyO3, добавив его в зависимости в файле Cargo.toml вашего Rust проекта:
[package]
name = "pyo3_example"
version = "0.1.0"
edition = "2018"
[lib]
name = "pyo3_example"
crate-type = ["cdylib"]
[dependencies.pyo3]
version = "0.15.0"
features = ["extension-module"]
⏺В файле src/lib.rs создайте функцию на Rust, которая будет доступна из Python:
use pyo3::prelude::*;
use pyo3::wrap_pyfunction;
#[pyfunction]
fn string_length(s: String) -> PyResult<usize> {
Ok(s.len())
}
#[pymodule]
fn pyo3_example(_py: Python, m: &PyModule) -> PyResult<()> {
m.add_function(wrap_pyfunction!(string_length, m)?)?;
Ok(())
}
Этот код определяет функцию string_length, которая принимает строку и возвращает ее длину. Декоратор #[pyfunction] и функция wrap_pyfunction! используются для регистрации этой функции в модуле Python.
⏺Соберите ваш Rust проект, используя Cargo:
cargo build --release
⏺После успешной сборки в директории target/release появится файл с расширением .so (для Linux и macOS) или .dll (для Windows), который можно импортировать в Python. Например, если ваш проект называется pyo3_example, имя файла будет libpyo3_example.so или pyo3_example.dll.
⏺Импортируйте и используйте ваш модуль в Python:
import sys
# Добавьте путь к скомпилированному файлу в список путей поиска
sys.path.append("path/to/your/target/release")
import pyo3_example
print(pyo3_example.string_length("Hello, Rust!"))
Этот Python скрипт импортирует модуль, созданный на Rust, и вызывает функцию string_length, передавая ей строку. В результате будет выведена длина строки.
⛓ Ссылка на документацию
@programistica // #Library5 764
❤️ Все платные курсы и книги выложили в Telegram
Крупнейшая база материалов по всем популярным языкам программирования теперь доступна бесплатно:
272 видео, 98 книг — JavaScript
352 видео, 87 книг — Python
145 видео, 71 книга — TypeScript
265 видео, 103 книги — Java
184 видео, 78 книг — C#
187 видео, 98 книг — C++
138 видео, 82 книги — PHP
112 видео, 61 книга — Shell
192 видео, 70 книг — Go
98 видео, 32 книги — Rust
202 видео, 94 книги — SQL
194 видео, 78 книг — Django
173 видео, 85 книг — Linux
155 видео, 44 книги — Flask
149 видео, 27 книг — QA
207 видео, 62 книги — Data Science
217 видео, 77 книг — Разработка ботов
164 видео, 96 книг — Разработка игр
🔒 Ежедневно куча материалов сливается в канал Easy Dev
5 764
💻 Вопрос из собеседования: Что такое функция map в Python?
map() — это функция, которая принимает другую в качестве аргумента, а затем применяет её ко всем элементам итератора, передаваемым ей в качестве другого аргумента. Функция вернет объект map, поэтому нам нужно преобразовать его в объект списка.
def number_exponential(num):
return num**2
number_list = [2,3,4,5]
print(list(map(number_exponential, number_list)))
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
5 764
👀 Книга: Программирование на Python для абсолютных новичков
⏺Знакомство с Python
⏺Основы
⏺Работа с данными
⏺Управление потоком
⏺Работа с файлами
⏺Что такое функции
⏺Импорт модулей
И многое другое
@programistica // #doc
5 764
5 764
🖼️ Библиотека Python: FastAPI
FastAPI — это современный, быстрый веб-фреймворк для создания API с Python 3.6+ на основе стандартных типов Python, который позволяет легко создавать высокопроизводительные веб-приложения. Он автоматически генерирует интерактивную документацию API и поддерживает асинхронные запросы, что делает его идеальным выбором для построения сложных веб-сервисов и приложений.
⚙️ Пример использования
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Привет, мир FastAPI!"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
В этом примере мы создаем экземпляр FastAPI и определяем два маршрута:
⏺read_root() обрабатывает GET-запросы к корневому пути ("/") и возвращает JSON с приветственным сообщением.
⏺read_item() обрабатывает GET-запросы к пути /items/{item_id}, принимая параметр item_id и опциональный запрос q. Этот маршрут возвращает JSON с item_id и q.
✔️ Установка
pip install fastapi uvicorn
⛓ Ссылка на документацию
@programistica // #Library5 764
⚙️ Наследование в Python: Основы и Примеры
Наследование является одним из фундаментальных принципов объектно-ориентированного программирования (ООП). В Python наследование позволяет одному классу (дочернему классу) наследовать атрибуты и методы другого класса (родительского класса), обеспечивая тем самым повторное использование кода и упрощение его структуры.
Основы наследования
В Python класс может наследовать функциональность другого класса, причем не только одного, но и нескольких классов, что называется множественным наследованием. Родительский класс также известен как базовый класс или суперкласс, а класс, который наследует его свойства, называется производным классом или подклассом.
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subclass must implement abstract method")
class Dog(Animal):
def speak(self):
return f"{self.name} says Woof!"
class Cat(Animal):
def speak(self):
return f"{self.name} says Meow!"
В приведенном выше примере класс Animal является базовым классом с методом speak, который предназначен для переопределения в подклассах. Классы Dog и Cat наследуют класс Animal и реализуют свою версию метода speak.
Переопределение методов
Подклассы могут переопределить методы базового класса. Это означает, что дочерний класс может иметь метод с таким же именем, как и в родительском классе, но с другой или дополненной функциональностью.
Функция super()
Функция super() в Python используется для вызова методов родительского класса из дочернего класса. Это особенно полезно в конструкторе __init__, когда необходимо инициализировать атрибуты базового класса.
class Bird(Animal):
def __init__(self, name, can_fly):
super().__init__(name)
self.can_fly = can_fly
Множественное наследование
Python поддерживает множественное наследование, позволяя классу наследовать функциональность более чем одного класса.
class A:
def method(self):
print("A method")
class B:
def method(self):
print("B method")
class C(A, B):
pass
obj = C()
obj.method()
В случае множественного наследования Python следует порядку разрешения методов (MRO - Method Resolution Order), чтобы определить, какой метод вызывать. В приведенном примере будет вызван метод из класса A, так как он указан первым в списке наследования класса C.
Заключение
Наследование в Python предоставляет мощный инструмент для создания структурированного и легко поддерживаемого кода. Оно позволяет разработчикам расширять и модифицировать существующий код без его дублирования, что ведет к более чистой и эффективной реализации программ.
@programistica // #article5 764
5 764
💻 Вопрос из собеседования: Как перевернуть генератор?
Можно перевернуть генератор в Python, используя функцию
reversed(). Вот пример, который демонстрирует это:
my_list = [1, 2, 3, 4, 5]
my_generator = (x**2 for x in my_list)
for item in reversed(list(my_generator)):
print(item)
В этом примере мы используем функцию reversed() вместе с функцией list(), чтобы создать обратный список элементов, сгенерированных генератором. Затем мы используем этот список с циклом for для перебора элементов в обратном порядке. Если вы работаете с большими наборами данных, может быть полезно использовать обратное итерирование без использования list(), чтобы избежать создания полной копии.
Вот пример, который демонстрирует это:
my_list = [1, 2, 3, 4, 5]
my_generator = (x**2 for x in my_list)
for item in reversed(tuple(my_generator)):
print(item)
Здесь мы используем функцию reversed() вместе с функцией tuple() для обратного итерирования через генератор без создания полной копии.|
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
5 764
👀 Книга: введение в основные библиотеки и фреймворки Python
⏺DATA Science
⏺Machine Learning
⏺MLOPS
⏺Explanable AI
⏺TEXT Processing
⏺Image Processing
И многое другое
@programistica // #doc
5 764
🖼️ Библиотека Python: Typer
Typer - это современная библиотека для создания командных интерфейсов (CLI) в Python, которая использует аннотации типов для автоматической генерации справочных сообщений и проверки аргументов. Основываясь на стандартах Python 3.6+ и тесно интегрированная с FastAPI, Typer облегчает разработку мощных и интуитивно понятных CLI-приложений, значительно сокращая необходимость в ручном кодировании и проверке.
⚙️ Пример использования
# импортируем библиотеку Typer
import typer
# создаем объект Typer, который будет использоваться для создания CLI
app = typer.Typer()
# определяем функцию, которая будет выполняться при вызове CLI-команды
@app.command()
def hello(name: str):
"""Принимает имя и выводит приветственное сообщение."""
typer.echo(f"Привет, {name}!")
# точка входа в приложение
if __name__ == "__main__":
app()
Сохраните этот код в файл, например, hello.py, и запустите из командной строки, передав имя в качестве аргумента:
python hello.py --name Алексей
Вы должны увидеть следующий вывод:
Привет, Алексей!
✔️ Установка
pip install typer
⛓ Ссылка на документацию
@programistica // #Library5 764
💻 Вопрос из собеседования: Что такое Cython? Что такое IronPython? Что такое PyPy? Почему они до сих пор существуют и зачем?
Cython - это язык программирования, нацеленный на увеличение производительности Python-кода. Cython позволяет использовать возможности языка Python и C/C++ для эффективного написания расширений модулей на языке Python. Он позволяет вам писать код на Python, который доступен из C/C++, и наоборот. Cython обеспечивает скорость выполнения, сравнимую со скоростью выполнения на языке C/C++, при этом сохраняя простоту и удобство использования языка Python. Cython compiler
компилирует исходный код в C/C++ и затем переводит его в машинный код, что дает быстрый доступ к низкоуровневым ресурсам операционной системы, таким как память и ввод-вывод. Cython также предоставляет возможность использовать дополнительные функции, такие как статическая типизация и параллельное программирование, для дополнительного увеличения производительности.
IronPython - это реализация языка программирования Python, которая работает в контексте платформы .NET. IronPython предоставляет возможность использовать Python в качестве языка .NET. Он может использоваться для написания .NET-приложений, а также для расширения приложений, написанных на других языках .NET. IronPython является открытым и свободно распространяемым программным обеспечением.
PyPy — это высокопроизводительная реализация языка программирования Python. Он был создан с целью предоставления более быстрой и эффективной альтернативы стандартному интерпретатору CPython. PyPy включает компилятор Just-In-Time (JIT), который может оптимизировать выполнение кода Python во время выполнения, что может привести к значительному повышению производительности по сравнению с CPython, особенно для определенных типов рабочих нагрузок. PyPy также поддерживает многие из тех же функций и модулей, что и CPython, включая объектно-ориентированное программирование, динамическую типизацию и стандартную библиотеку Python.
Надеюсь это поможет вам пройти собеседование на желаемую вами работу, удачи🔥🔥🔥@programistica // #jobs
5 764
⚙️Работа с двумерными массивами в Python
Сегодня решил затронуть довольно банальную, но полезную вещь, как работа с двумерными массивами.
🌀Двумерные массивы — это структуры данных, которые позволяют хранить информацию в виде таблицы, состоящей из строк и столбцов. В Python двумерные массивы часто реализуются с помощью списков списков или с использованием специализированных библиотек, таких как NumPy, которая предлагает более эффективные и удобные средства для работы с массивами.
Создание двумерного массива
Для создания двумерного массива в Python можно использовать список списков. Вот пример создания двумерного массива, представляющего собой матрицу 3x3:
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Этот код создает матрицу, где каждый внутренний список представляет собой строку матрицы.
Доступ к элементам
Для доступа к элементам двумерного массива можно использовать индексацию. Сначала указывается индекс строки, а затем индекс столбца:
# Получение элемента на позиции (2, 3)
element = matrix[1][2]
print(element) # Выведет: 6
Изменение элементов
Изменить элемент можно, указав его позицию и присвоив новое значение:
# Изменение элемента на позиции (2, 3)
matrix[1][2] = 10
print(matrix[1][2]) # Выведет: 10
Перебор элементов
Для перебора всех элементов двумерного массива можно использовать вложенные циклы:
for row in matrix:
for element in row:
print(element, end=' ')
print()
Этот код последовательно выведет все элементы матрицы, сохраняя структуру строк и столбцов.
Использование NumPy для работы с двумерными массивами
Библиотека NumPy предлагает тип данных ndarray для эффективной работы с многомерными массивами. Чтобы использовать NumPy, необходимо сначала установить библиотеку, а затем импортировать ее в свой код:
import numpy as np
# Создание двумерного массива с помощью NumPy
np_matrix = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
# Доступ к элементу
print(np_matrix[1, 2]) # Выведет: 6
# Изменение элемента
np_matrix[1, 2] = 10
print(np_matrix[1, 2]) # Выведет: 10
NumPy предоставляет множество функций для математических операций над массивами, линейной алгебры, статистики и многое другое, что делает его мощным инструментом для научных вычислений.
Заключение
Двумерные массивы в Python — это удобный способ работы с табличными данными. Использование встроенных списков подходит для простых задач, но при работе с большими объемами данных или выполнении сложных математических операций рекомендуется использовать библиотеку NumPy, которая оптимизирована для этих целей.
@programistica // #article