Поэтому при первом вызове add_to_list(1) список становится [1], а при втором вызове add_to_list(2) к тому же списку добавляется 2, итог — [1, 2].
Это классическая ловушка с изменяемыми аргументами по умолчанию в Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤4🔥4
def bubble_sort(arr):
"""Сортировка пузырьком."""
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
# Пример использования
data = [64, 34, 25, 12, 22, 11, 90]
sorted_data = bubble_sort(data)
print("Отсортированный массив:", sorted_data)
def quick_sort(arr):
"""Быстрая сортировка."""
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
less = [x for x in arr[1:] if x <= pivot]
greater = [x for x in arr[1:] if x > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)
# Пример использования
data = [64, 34, 25, 12, 22, 11, 90]
sorted_data = quick_sort(data)
print("Отсортированный массив:", sorted_data)
- Эффективность: Разные алгоритмы имеют разную сложность (например, O(n²) для пузырьковой сортировки и O(n log n) для быстрой сортировки), что влияет на производительность.
- Практическое применение: Сортировка используется везде: от поиска данных до обработки больших наборов информации.
- Обучение логическому мышлению: Реализация алгоритмов сортировки помогает лучше понимать основы программирования и оптимизации кода.
Алгоритмы сортировки — это важная часть компьютерных наук. Они позволяют эффективно работать с данными и решать сложные задачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤3👍2
👍8❤3🤨3🤓1
Поэтому все функции используют i = 2, и результат для любого вызова funcs[n](1) будет 1 + 2 = 3.
Это типичная "ловушка" при работе с замыканиями в циклах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤3🔥3
# Генератор для создания бесконечной последовательности чисел
def infinite_sequence():
num = 0
while True:
yield num
num += 1
# Использование генератора
seq = infinite_sequence()
print(next(seq)) # Вывод: 0
print(next(seq)) # Вывод: 1
print(next(seq)) # Вывод: 2
itertools для ленивых вычислений:import itertools
# Создаем бесконечную последовательность четных чисел
even_numbers = itertools.count(0, 2)
# Берем первые 5 элементов из последовательности
first_five = itertools.islice(even_numbers, 5)
print(list(first_five)) # Вывод: [0, 2, 4, 6, 8]
- Экономия памяти: Вместо хранения всех данных в памяти, генераторы создают их по мере необходимости.
- Оптимизация производительности: Нет необходимости выполнять лишние вычисления, если результат не понадобится.
- Обработка больших данных: Ленивые вычисления позволяют работать с огромными наборами данных, которые не помещаются в память.
- Чистый код: Генераторы и ленивые вычисления делают код более читаемым и поддерживаемым.
Ленивые вычисления — это мощный инструмент для оптимизации программ в Python. Они помогают эффективно использовать ресурсы и работать с большими объемами данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥2
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20👍3💯3🤔1
import igraph as ig
# Создаем граф
graph = ig.Graph()
# Добавляем вершины
graph.add_vertices(5)
# Добавляем ребра
graph.add_edges([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)])
# Визуализируем граф
ig.plot(graph, vertex_label=range(graph.vcount()), vertex_color="lightblue", edge_width=2)
import igraph as ig
# Создаем граф
graph = ig.Graph.Tree(10, 2) # Дерево с 10 узлами и ветвлением 2
# Получаем характеристики графа
print("Количество вершин:", graph.vcount()) # Вывод: 10
print("Количество ребер:", graph.ecount()) # Вывод: 9
print("Степень каждой вершины:", graph.degree()) # Вывод: [2, 3, 3, 1, 1, 1, 1, 1, 1, 1]
# Находим диаметр графа
diameter = graph.diameter()
print("Диаметр графа:", diameter)
— Подходит для анализа графов среднего и большого размера
— Делает акцент на производительности и эффективности использования памяти
— Поддерживает направленные и ненаправленные графы, взвешенные графы
— Имеет богатый набор алгоритмов компоновки
— Интегрируется с популярными библиотеками Python для науки о данных, такими как NumPy и Pandas. 3
igraph — это универсальный инструмент для анализа и визуализации графов. Он помогает исследовать сложные сети и находить скрытые закономерности в данных. Он особенно полезен для исследователей и учёных, работающих со сложными сетевыми структурами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥3
- Тензоры: Многомерные массивы, аналогичные массивам NumPy. Они являются основными элементами, с которыми работает TensorFlow.
- Операции: Функции, которые выполняют вычисления над тензорами.
- Переменные: Значения, которые изменяются в процессе обучения модели.
- Граф вычислений: TensorFlow использует графы для представления математических операций. Каждый узел графа представляет операцию, а ребра — данные (тензоры), передающиеся между операциями.
1.Загрузка данных:
TensorFlow позволяет легко загружать и предобрабатывать данные. В примере ниже мы используем набор данных MNIST, который часто используется для обучения систем обработки изображений:
import tensorflow as tf
from tensorflow.keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
2.Определение модели:
Мы используем API Keras, интегрированный в TensorFlow, для определения нашей нейронной сети:
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
3.Компиляция модели:
Затем мы компилируем модель, указывая оптимизатор, функцию потерь и метрики:
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
4.Обучение модели:
Обучаем модель с использованием обучающих данных:
model.fit(x_train, y_train, epochs=5)
5.Оценка модели:
Наконец, оцениваем модель с использованием тестовых данных:
model.evaluate(x_test, y_test)
TensorFlow в Python — это мощный инструмент для создания моделей машинного обучения. Независимо от того, являетесь ли вы начинающим или опытным разработчиком, обширная экосистема и надежные функции TensorFlow делают его ценным инструментом в вашем арсенале искусственного интеллекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5🔥2
— Путь доступа к данным: Glom позволяет использовать пути для доступа к вложенным данным, например, a.b.c.
— Объявление преобразований данных: Glom предоставляет инструменты для преобразования данных с помощью лёгких и понятных спецификаций.
— Читаемые сообщения об ошибках: Glom предоставляет читаемые сообщения об ошибках, чтобы помочь вам быстро найти и исправить проблемы.
— Встроенная отладка: Glom предоставляет инструменты для отладки, чтобы помочь вам быстро найти и исправить проблемы.
— Дополнительные возможности: Glom также предоставляет инструменты для глубокого присваивания, потоковой обработки и валидации данных.
1.Доступ к данным:
from glom import glom
# Пример данных
data = {'a': {'b': {'c': 'd'}}}
# Доступ к данным с помощью пути
result = glom(data, 'a.b.c') # Вернёт 'd'
print(result)
2.Обработка вложенных списков:
# Пример данных
data = {'a': [{'k': 'v1'}, {'k': 'v2'}]}
# Доступ к данным в вложенных списках с помощью шаблона
result = glom(data, 'a.*.k') # Вернёт ['v1', 'v2']
print(result)
3.Преобразование данных. Glom позволяет не только получать данные, но и преобразовывать их:
# Пример данных
data = {'a': {'b': 'c', 'd': 'e'}, 'f': 'g', 'h': [0, 1, 2]}
# Определение спецификации преобразования
spec = {'a': 'a.b', 'd': 'a.d', 'h': ('h', [lambda x: x * 2])}
# Применение спецификации преобразования
output = glom(data, spec)
print(output) # Вывод {'a': 'c', 'd': 'e', 'h': [0, 2, 4]}
4.Обработка ошибок. Glom предоставляет читаемые сообщения об ошибках, что позволяет быстро находить и исправлять проблемы:
# Пример данных
data = {'a': {'b': None}}
# Попытка доступа к несуществующему пути
try:
result = glom(data, 'a.b.c')
except Exception as e:
print(e) # Вывод сообщения об ошибке
Glom — это мощный инструмент для работы с вложенными данными. Он позволяет легко получать доступ к данным и преобразовывать их с помощью путей и спецификаций. Glom подходит как для аналитиков данных, так и для разработчиков, которые хотят упростить работу с вложенными структурами данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
Boltons содержит множество модулей, каждый из которых специализируется на определенной области функциональности. Вот некоторые ключевые модули и возможности:
1.
iterutils:Утилиты для работы с итераторами и итерируемыми объектами, включая расширенные инструменты itertools и шаблоны итерирования.
2.
strutils:Дополнительные инструменты для работы со строками, такие как расширенная интерполяция, форматирование текста и заполнение.
3.
fileutils:Утилиты для работы с файлами и каталогами, включая итерацию по файлам, атомарное сохранение файлов и операции с деревьями каталогов.
4.
datetimeutils:Расширенные инструменты для работы с датами и временем, включая более гибкие возможности парсинга и форматирования, работу с часовыми поясами и операции с
timedelta.
5.
funcutils:Утилиты для работы с функциями, такие как композиция функций, декораторы кэширования и валидации аргументов.
6.
cacheutils:Утилиты для кэширования, такие как LRU-кэш.
7.
dictutils:Расширенные инструменты для работы со словарями, такие как OrderedMultiDict.
8.
queueutils:Утилиты для работы с очередями, такие как PriorityQueue.
9.
tbutils:Утилиты для работы с трассировками стека, такие как тип TracebackInfo, который упрощает отладку и отчёты об исключениях.
from boltons.dictutils import OMD
# OrderedMultiDict — словарь, сохраняющий порядок и поддерживающий дубликаты ключей
data = OMD()
data.add('status', 'ok')
data.add('status', 'warning')
print(data.getlist('status')) # ['ok', 'warning']
Boltons — это мощная библиотека утилит, которая дополняет стандартную библиотеку Python, предоставляя множество дополнительных инструментов и функций. Независимо от того, являетесь ли вы разработчиком на Python или аналитиком данных, Boltons поможет вам повысить эффективность работы и упростить реализацию кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥2
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17😁9🤣7👌1
😢8❤3🤔2👍1🤨1
Метод __del__ вызывается автоматически, когда объект уничтожается (например, после выполнения del или когда программа завершается).
Если объект больше не имеет ссылок, он удаляется сборщиком мусора, и вызывается деструктор.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥4🤓3
- Управление временем и датами: Astropy предоставляет инструменты для работы с астрономическим временем, включая преобразование между различными временными шкалами и форматами.
- Координатные системы: Библиотека позволяет работать с астрономическими координатами, включая преобразование между различными системами координат (например, экваториальными, эклиптическими и галактическими).
- Обработка изображений: Astropy включает инструменты для чтения, записи и обработки астрономических изображений, включая поддержку формата FITS (Flexible Image Transport System).
- Анализ спектров: Библиотека предоставляет функции для анализа астрономических спектров, включая измерение линий спектра и расчет физических параметров.
- Астрономические единицы и константы: Astropy предоставляет набор астрономических единиц и фундаментальных констант, которые можно использовать в вычислениях.
- Интеграция с другими библиотеками: Astropy интегрируется с другими популярными библиотеками Python, такими как NumPy, SciPy, Matplotlib и Pandas, что позволяет создавать мощные астрономические приложения.
1.Работа с временем:
from astropy.time import Time
# Создание объекта времени
t = Time('2023-10-10 12:00:00', format='iso', scale='utc')
# Преобразование времени в другой формат
print(t.jd) # Вывод времени в формате Julian Date
2.Работа с координатами:
from astropy.coordinates import SkyCoord
from astropy import units as u
# Создание объекта координат
c = SkyCoord(ra=10.68458*u.degree, dec=41.26917*u.degree, frame='icrs')
# Преобразование координат в другую систему
print(c.galactic) # Вывод координат в галактической системе
3.Анализ спектров:
from astropy import units as u
from astropy.modeling import models, fitting
# Создание спектра
wavelength = [400, 500, 600, 700] * u.nm
flux = [1, 2, 3, 4] * u.Jy
# Подгонка модели к спектру
model = models.Gaussian1D(amplitude=2*u.Jy, mean=500*u.nm, stddev=50*u.nm)
fitter = fitting.LevMarLSQFitter()
fitted_model = fitter(model, wavelength, flux)
# Вывод параметров модели
print(fitted_model)
Astropy предоставляет широкий набор инструментов для работы с астрономическими данными, включая обработку изображений, анализ спектров, управление временем и координатами. А благодаря простому и интуитивному API, Astropy легко интегрируется в проекты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥2
Представьте, что вы пишете функцию внутри функции и вам нужно изменить переменную "снаружи". Без special words Python скажет: "Неа, не получится!"
Global:
x = 5 # глобальная переменная
def change_x():
global x # говорим Python, что хотим менять глобальную x
x = 10 # теперь работает!
change_x()
print(x) # выведет 10
Nonlocal:
def outer():
counter = 0 # переменная внешней функции
def inner():
nonlocal counter # хотим менять counter из outer
counter += 1 # работает!
inner()
print(counter) # выведет 1
outer()
- Global можно использовать для создания новых переменных
- Nonlocal работает только с существующими переменными
- В Python 3.13 пофиксили баги с global в блоках else и except
Неправильно:
def bad_function():
print(x) # ошибка!
global x # global нужно объявлять до использования
x = 10
Правильно:
def good_function():
global x
print(x) # теперь всё ок
x = 10
Чтобы проверить, какие переменные у вас есть:
print(globals()) # все глобальные переменные
print(locals()) # все локальные переменные
- Используйте global только когда действительно необходимо
- Nonlocal отлично подходит для счетчиков и аккумуляторов
- Всегда документируйте использование global и nonlocal в комментариях
- Старайтесь минимизировать использование глобальных переменных
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥3
1.Символьные переменные и выражения:
SymPy позволяет создавать символьные переменные и выполнять операции с ними, не присваивая им конкретных числовых значений.
2.Алгебра:
SymPy предоставляет инструменты для работы с алгебраическими выражениями, включая упрощение, разложение и факторинг.
3.Исчисление:
SymPy поддерживает дифференцирование, интегрирование, пределы и ряды Тейлора.
4.Линейная алгебра:
SymPy позволяет работать с матрицами и векторами, включая операции сложения, умножения, определения и решения систем линейных уравнений.
5.Решение уравнений:
SymPy предоставляет инструменты для решения алгебраических и дифференциальных уравнений.
6.Графики:
SymPy интегрируется с Matplotlib для визуализации математических функций и выражений.
1.Создание символьных переменных и выражений:
from sympy import symbols, sin, cos
# Создание символьных переменных
x, y = symbols('x y')
# Создание выражения
expr = sin(x) + cos(y)
# Вывод выражения
print(expr)
2.Работа с матрицами:
from sympy import Matrix
# Создание матрицы
A = Matrix([[1, 2], [3, 4]])
# Вычисление определителя
det_A = A.det()
print('Определитель матрицы A:', det_A)
# Решение системы линейных уравнений
B = Matrix([1, 2])
solutions = A.solve(B)
print('Решение системы уравнений:', solutions)
Официальный сайт
GitHub
Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2
Что выдаст код выше❔
Anonymous Quiz
21%
aa - bb
27%
('a','a') - ['b','b']
24%
aa - ['b','b']
6%
('a','a') - bb
21%
Error
🤔14🤓6🤨3👍2❤1