ru
Feedback
Python Portal

Python Portal

Открыть в Telegram

Всё самое интересное из мира Python Сотрудничество, реклама: @devmangx Менеджер: @Spiral_Yuri РКН: https://clck.ru/3GMMF6

Больше

📈 Аналитический обзор Telegram-канала Python Portal

Канал Python Portal (@pythonportal) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 52 440 подписчиков, занимая 2 547 место в категории Технологии и приложения и 11 911 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 52 440 подписчиков.

Согласно последним данным от 10 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило -783, а за последние 24 часа — -20, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 9.32%. В первые 24 часа после публикации контент обычно набирает 5.78% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 4 892 просмотров. В течение первых суток публикация набирает 3 033 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 25.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как строка, none, true, модуль, peter.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Всё самое интересное из мира Python Сотрудничество, реклама: @devmangx Менеджер: @Spiral_Yuri РКН: https://clck.ru/3GMMF6

Благодаря высокой частоте обновлений (последние данные получены 11 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.

52 440
Подписчики
-2024 часа
-1877 дней
-78330 день
Архив постов
Немного базы Python. День 8 - Сделать вложенный список плоским Я покажу вам три (3) способа, как можно развернуть двумерный список. В первом методе используется цикл for, во втором используется модуль itertools, а в третьем используется списковое включение (list comprehension). ⚙️ С помощью цикла for: Для этого метода мы используем вложенный цикл for. Внешний цикл проходит по внутренним спискам, а внутренний цикл обращается к элементам во внутренних списках.
# In [19]:
list1 = [[1, 2, 3],[4, 5, 6]]

newlist = []
for list2 in list1:
    for j in list2:
        newlist.append(j)

print(newlist)
[1, 2, 3, 4, 5, 6]
⚙️ С помощью модуля itertools: Функцию itertools.chain.from_iterable() из модуля itertools можно использовать, чтобы развернуть вложенный список. Этот метод может не подойти для списков с глубокой вложенностью.
# In [20]:
import itertools

list1 = [[1, 2, 3],[4, 5, 6]]

flat_list = list(itertools.chain.from_iterable(list1))
print(flat_list)
[1, 2, 3, 4, 5, 6]
Вы можете увидеть, что вложенный цикл был развернут. ⚙️ С помощью list comprehension Если вы не хотите импортировать itertools или писать обычный цикл for, можно просто использовать list comprehension.
# In [21]:
list1 = [[1, 2, 3], [4, 5, 6]]

flat_list = [i for j in list1 for i in j]
print(flat_list)
[1, 2, 3, 4, 5, 6]
List comprehension хорошо подходит для умеренно вложенных списков. Для глубоко вложенных списков он не подходит, так как код становится хуже читаемым. ⚙️ С помощью генераторной функции Можно создать генераторную функцию, которая делает yield элементов из вложенного списка, а затем преобразовать генератор в список.
# In [22]:
def flatten_generator(nested_list):
    for sublist in nested_list:
        for item in sublist:
            yield item

list1 = [[1, 2, 3], [4, 5, 6]]

flat_list = list(flatten_generator(list1))
flat_list
Out[22]: [1, 2, 3, 4, 5, 6]
Метод с генератором подходит для разворачивания больших или глубоко вложенных списков. Это потому, что генераторы экономно расходуют память. 👉 @PythonPortal

Ну кто опять накатил питона на принтер ?? 👉 @PythonPortal

Шпаргалка по библиотеке Pandas 👉 @PythonPortal
+1
Шпаргалка по библиотеке Pandas 👉 @PythonPortal

На Stepik запустили курс «От новичка к уверенности в коде на Python» Курс создан для новичков, которым важно не заучить коман
На Stepik запустили курс «От новичка к уверенности в коде на Python» Курс создан для новичков, которым важно не заучить команды, а понять логику. Наглядные схемы и визуальные разборы показывают, что происходит внутри программы и как она работает Много практики, понятные объяснения решений не дадут застрять на теории. Материал предлагает вам не иллюзию знаний, а ощущение контроля: вы ясно видите как из нескольких строк кода рождается работающая программа Что внутри: ✅переменные и типы данных ✅условия и логика программ ✅циклы и рекурсия ✅функции и работа с вводом данных ✅списки, словари и множества ✅базовое ООП ✅работа с библиотеками Python ✅десятки задач и упражнений Эти знания фундамент для написания простых ботов и автоматизации задач Скидка 25%, действует 48 часов 🔗Пройти курс на Stepik

Немного базы Python. День 7. Подсчет количества вхождений элемента Если тебе нужно узнать, сколько раз элемент встречается в итерируемой коллекции, можно использовать класс Counter из модуля collections. Counter() вернет словарь с тем, сколько раз каждый элемент встречается в последовательности. Допустим, мы хотим узнать, сколько раз имя Peter встречается в следующем списке. Можно использовать Counter(). См. ниже:
from collections import Counter

list1 = ['John', 'Kelly', 'Peter', 'Moses', 'Peter']

count_peter = Counter(list1).get("Peter")

print(f'The name "Peter" appears in the list '
      f'{count_peter} times.')
Вывод:
The name "Peter" appears in the list 2 times.
Еще один способ сделать это — обычный цикл for. Мы заводим переменную-счетчик и увеличиваем ее на 1 каждый раз, когда находим имя Peter в последовательности. Это наивный способ. См. ниже:
list1 = ['John', 'Kelly', 'Peter', 'Moses', 'Peter']
# Create a count variable
count = 0
for name in list1:
    if name == 'Peter':
        count +=1
print(f'The name "Peter" appears in the list'
      f' {count} times.')
Вывод:
The name "Peter" appears in the list 2 times.
Списки и другие итерируемые структуры данных в Python имеют встроенный метод count(), который позволяет посчитать количество вхождений конкретного элемента. Мы можем использовать count(), чтобы посчитать, сколько раз Peter встречается в списке.
list1 = ['John', 'Kelly', 'Peter', 'Moses', 'Peter']

print(f'The name "Peter" appears in the list '
      f'{list1.count("Peter")} times.')
Вывод:
The name "Peter" appears in the list 2 times.
👉 @PythonPortal

Алгоритмы оптимизации от MIT: https://drive.google.com/file/d/1Rx7MAekKZbyNVc5B2MNfR0HXXIEJCksp/view 👉 @PythonPortal
Алгоритмы оптимизации от MIT: https://drive.google.com/file/d/1Rx7MAekKZbyNVc5B2MNfR0HXXIEJCksp/view 👉 @PythonPortal

giveHimABreak 👉 @PythonPortal
giveHimABreak 👉 @PythonPortal

Немного базы Python. День 6 - Обмен значениями переменных В Python можно менять местами переменные после того, как им уже присвоены объекты. Ниже мы сначала присваиваем 20 переменной x и 30 переменной y, а потом меняем их местами: x становится 30, а y становится 20. Этот способ называется упаковкой и распаковкой кортежа (tuple packing/unpacking).
x, y = 20, 30
x, y = y, x

print('x is: ', x)
print('y is: ', y)
x is 30
y is 20
Также можно использовать оператор XOR (exclusive or), чтобы поменять переменные местами. Это трехшаговый метод. В примере ниже мы меняем местами значения x и y.
x = 20
y = 30

# шаг первый
x ^= y
# шаг второй
y ^= x
# шаг третий
x ^= y

print(f'x is: {x}')
print(f'y is: {y}')
x is: 30
y is: 20
Также можно использовать арифметические операции (сложение и вычитание), чтобы поменять переменные местами без временной переменной. Однако этот метод рекомендуется для обмена переменных числовых типов данных. Вот пример:
# Используем арифметические операции
x = 5
y = 10

x = x + y
y = x - y
x = x - y

print("After swapping:")
print("x =", x)
print("y =", y)
After swapping:
x = 10
y = 5
В результате этих арифметических операций значения x и y были фактически поменяны местами. После обмена x содержит исходное значение y (10), а y содержит исходное значение x (5). Этот способ обмена переменных без временной переменной основан на том, что когда вы прибавляете или вычитаете значение одной переменной из другой, можно эффективно обменять их значения без необходимости в дополнительном хранилище. 👉 @PythonPortal

Перестаньте использовать if obj == None, используйте if obj is None В Python, когда вы пишете: obj == None вы не проверяете н
Перестаньте использовать if obj == None, используйте if obj is None В Python, когда вы пишете:
obj == None
вы не проверяете напрямую, является ли obj значением None. Вместо этого вы спрашиваете, равен ли объект None. Да, во многих случаях результат будет таким же, как у кода:
obj is None
Но поведение у этих двух вариантов разное, и эта разница важна. Когда вы используете:
obj == None
Python вызывает метод __eq__ у объекта. То есть сам объект решает, что значит "равен None". А этот метод можно переопределить. Если obj это экземпляр класса, в котором __eq__ реализован так, что при сравнении с None возвращается True (даже если объект на самом деле не None), тогда obj == None может ошибочно дать True. Пример:
class Weird:
    def __eq__(self, other):
        return True  # Всегда утверждает, что равен

obj = Weird()

print(obj == None)  # True
print(obj is None)  # False
Здесь видно, что obj == None возвращает True из-за кастомного поведения оператора __eq__ в классе. Из этого следует, что при использовании obj == None результат не всегда предсказуем. С другой стороны, когда вы пишете:
obj is None
вы используете оператор is, который нельзя переопределить. Это значит, что результат всегда будет одинаковым и предсказуемым. Оператор is проверяет идентичность объектов, то есть указывают ли две ссылки на один и тот же объект. Поскольку None это singleton (единственный экземпляр), obj is None это правильный и самый эффективный способ такой проверки. ❤️ Поэтому всегда рекомендуется, и это best practice, использовать obj is None вместо obj == None ради предсказуемости и эффективности. 👉 @PythonPortal

Главное захотеть 🧠 👉 @PythonPortal
Главное захотеть 🧠 👉 @PythonPortal

Немного базы Python. День 5. Сортировка списка по убыванию Метод sort() сортирует список по возрастанию (по умолчанию). Чтобы sort() работал, элементы списка должны быть одного типа. Нельзя сортировать список со смешанными типами данных, например числа и строки. У метода sort() есть параметр reverse; чтобы отсортировать список по убыванию, установите reverse=True.
list1 = [2, 5, 6, 8, 1, 8, 9, 11]

list1.sort(reverse=True)
print(list1)

# [11, 9, 8, 8, 6, 5, 2, 1]
Помните: sort() это строго метод списка (list). Его нельзя использовать для сортировки set, tuple, string или dictionary. Метод sort() не возвращает новый список; он сортирует существующий список на месте (in place). Если вы попробуете создать новый объект с помощью sort(), он вернет None. Пример ниже:
list1 = [2, 5, 6, 8, 1, 8, 9, 11]
list2 = list1.sort(reverse=True)
print(list2)

# None
У метода sort() есть необязательный параметр key, который позволяет настроить поведение сортировки. Этот параметр используется для передачи функции, которая задает критерий сортировки элементов списка. В примере ниже у нас список кортежей, и мы хотим отсортировать его по возрасту студента. Используя параметр key вместе с lambda-функцией, можно реализовать такую кастомную сортировку. См. ниже:
students = [
    ("Alice", 22),
    ("Bob", 20),
    ("Charlie", 24)
]

# Сортируем студентов по возрасту, используя lambda-функцию как key
students.sort(key=lambda students: students[1])
print(students)

# [('Bob', 20), ('Alice', 22), ('Charlie', 24)]
Метод sort() является стабильным (stable), то есть сохраняет относительный порядок равных элементов в отсортированном списке. Если у двух элементов одинаковый ключ сортировки, их исходный порядок сохраняется. Например, если у "Alice" и "Bob" одинаковый возраст, их порядок останется прежним. Это и называется стабильной сортировкой (stable sorting). См. пример:
students = [
    ("Alice", 22),
    ("Bob", 22),
    ("Charlie", 24)
]

# Сортируем студентов по возрасту, используя lambda-функцию как key
students.sort(key=lambda students: students[1])
print(students)

# [('Alice', 22), ('Bob', 22), ('Charlie', 24)]
Как видно, порядок элементов "Alice" и "Bob" не изменился, потому что у них одинаковый возраст. 👉 @PythonPortal

Чувак сжал 2,87 ГБ данных до 8,9 МБ (!) с помощью своего кастомного компрессора данных :D Там было 21k JSON-файлов с данными
Чувак сжал 2,87 ГБ данных до 8,9 МБ (!) с помощью своего кастомного компрессора данных :D Там было 21k JSON-файлов с данными о крикетных матчах, он использовал их структуру и сжал это до ~42,46 МБ Максимум, что смог gzip, это ~53 МБ, а 7z ~45 МБ. Потом он скомбинировал свой компрессор + 7z и ужал до 8,9 МБ Это ЧИСТАЯ случайность, дальше сжать уже просто нельзя. Ему пришлось почитать про энтропию Шеннона и алгоритмическое сжатие данных Полный разбор в GitHub-репозитории 😎 👉 @PythonPortal

Немного базы Python. День 4: Получение текущего времени и даты Ниже приведенный код показывает, как можно получить текущее время с помощью модуля datetime. Метод now() возвращает объект datetime, представляющий текущие дату и время в соответствии с системными часами. Метод strftime() форматирует время для нужного вывода. Этот код показывает, как использовать модуль datetime вместе с методом strftime(), чтобы получить отформатированную строку времени в формате часов, минут и секунд.
from datetime import datetime

time_now = datetime.now().strftime('%H:%M:%S')
print(f'Текущее время: {time_now}')
Текущее время: 17:37:28
Что, если мы хотим вернуть сегодняшнюю дату? Мы можем использовать date из модуля datetime. Ниже используется метод today():
from datetime import date

today_date = date.today()
print(today_date)
2023-09-20
👉 @PythonPortal

Совет для AI-инженеров 💡 Небольшая VLM, дообученная на вашем кастомном датасете, по точности может быть на уровне GPT-5 и при этом стоит в 50 раз дешевле. Например, LFM2.5-VL-1.6B от Liquid Ai можно гонять локально на полной скорости через llama.cpp ↓ - Python CLI пример 👉 @PythonPortal

Конец игры 👉 @PythonPortal

Немного базы. День 3: Календарь в Python В Python есть встроенный модуль calendar. Мы можем импортировать этот модуль, чтобы вывести календарь. С календарём можно делать много разных вещей. Допустим, мы хотим посмотреть апрель 2022 года. Мы используем класс month из модуля calendar и передадим год и месяц в качестве аргументов. См. ниже:
import calendar

month = calendar.month(2022, 4)
print(month)
Есть ещё много всего, что можно сделать с calendar. Например, с его помощью можно проверить, является ли заданный год високосным или нет. Давай проверим, високосный ли 2022 год.
import calendar

month = calendar.isleap(2022)
print(month)
False
👉 @PythonPortal

Ускорь JSON-ответы FastAPI в 2 раза, а то и больше 1. Обновись до только что вышедшего FastAPI 0.131.0 2. Объявляй response m
Ускорь JSON-ответы FastAPI в 2 раза, а то и больше 1. Обновись до только что вышедшего FastAPI 0.131.0 2. Объявляй response model (тип возврата) После этого @pydantic будет заниматься JSON-сериализацией на стороне Rust 🦀 https://fastapi.tiangolo.com/advanced/custom-response/#json-performance 👉 @PythonPortal

На Stepik добавили курс «Linux с нуля» Этот курс закрывает всю обязательную Linux-базу для работы в IT. Подойдёт для: - разра
+4
На Stepik добавили курс «Linux с нуля» Этот курс закрывает всю обязательную Linux-базу для работы в IT. Подойдёт для:
- разработчиков - девопсов и админов - специалистов по данным и ML - специалистов поддержки и сопровождения - тестировщиков и безопасников
Внутри 20+ модулей: от установки Linux и работы с файлами до сетей, прав, дисков, процессов, автоматизации на Bash и многого другого. Всё сразу закрепляется на практике (200+ заданий с автопроверкой) Материал подаётся понятным языком, шаг за шагом, на реальных примерах и с наглядными схемами После прохождения вы получите сертификат, который можно добавить в резюме. В ближайшие 48ч курс доступен со скидкой 30% по промокоду «23LINUX30»: открыть курс на Stepik

HTTP против HTTPS наглядно 👉 @PythonPortal

Немного базы Python. День 2: cлияние словарей Если у тебя есть два словаря, которые нужно объединить, это можно сделать двумя простыми способами. Можно использовать оператор merge (|) или оператор (**). Ниже у нас есть два словаря: first_dict и second_dict. Мы будем использовать эти два метода, чтобы объединить словари. Вот код: 1️⃣ Использование оператора merge (|)
first_dict = {"kelly": 23,
              "Derick": 14, "John": 7}
second_dict = {"Ravi": 45, "Mpho": 67}

combined_dict = first_dict | second_dict
print(combined_dict)
Вывод:
{'kelly': 23, 'Derick': 14, 'John': 7, 'Ravi': 45, 'Mpho': 67}
2️⃣Метод 2: использование оператора merge (**) С этим оператором нужно поместить словари внутрь фигурных скобок. В коде ниже мы “подставляем” два словаря для объединения с помощью двух операторов *. Оба словаря заключены в фигурные скобки и разделены запятой.
first_dict = {"kelly": 23,
              "Derick": 14, "John": 7}
second_dict = {"Ravi": 45, "Mpho": 67}

combined_dict = {**first_dict, **second_dict}
print(combined_dict)
Вывод:
{'kelly': 23, 'Derick': 14, 'John': 7, 'Ravi': 45, 'Mpho': 67}
👉 @PythonPortal