Python Portal
Всё самое интересное из мира Python Сотрудничество, реклама: @devmangx Менеджер: @Spiral_Yuri РКН: https://clck.ru/3GMMF6
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Python Portal
تُعد قناة Python Portal (@pythonportal) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 52 460 مشتركاً، محتلاً المرتبة 2 547 في فئة التكنولوجيات والتطبيقات والمرتبة 11 911 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 52 460 مشتركاً.
بحسب آخر البيانات بتاريخ 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) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
startswith() и endswith() это строковые методы, которые возвращают True, если строка начинается или заканчивается указанным значением. Эти методы можно использовать в разных ситуациях, когда нужно проверить префикс или суффикс у строки. Они особенно полезны для фильтрации и задач валидации.
- Использование метода Startswith
Допустим, ты хочешь получить все имена в списке, которые начинаются на a. Вот как можно использовать startswith() для этого:
list1 = ['lemon', 'Orange',
'apple', 'apricot']
new_list = [fruit for fruit in list1 if fruit.startswith('a')]
print(new_list)
['apple', 'apricot']
- Использование метода Endswith
Метод endswith() можно использовать для валидации ввода пользователя. Например, если нужно проверить, что пользователь ввёл корректный Gmail-адрес, можно убедиться, что ввод заканчивается на gmail.com:
user_input = input("Введите email-адрес: ")
if user_input.endswith("@gmail.com"):
print("Валидный email-адрес.")
else:
print("Невалидный email-адрес.")
👉 @PythonPortal #100daysofpythontype Record<K extends string, V> = {
[P in K]: V
}
// так что...
type Fruit = Record<
'apple' | 'banana' | 'orange',
string
>
// развернется в
//
// {
// apple: string;
// banana: string;
// orange: string;
// }
Python
type Record[K, V] = NewTypedDict[
*[Member[k, V] for k in Iter[FromUnion[K]]]
]
# так что...
type Fruit = Record[
Literal["apple", "banana", "orange"],
str
]
# развернется в
#
# class <Fruit>:
# apple: str
# banana: str
# orange: str
Вот пример Pick:
TypeScript
type Pick<T, K extends keyof T> = {
[P in K]: T[P]
}
Python
type Pick[T, K] = NewProtocol[*[
p for p in Iter[Attrs[T]]
if IsAssignable[p.name, K]
]]
А вот Omit. Обрати внимание: версия на Python по сути не изменилась по сравнению с реализацией Pick, в отличие от TS.
TypeScript
ts id="5ehk8a"
type Omit<T, K extends keyof T> = {
[P in Exclude<keyof T, K>]: T[P]
}
Python
py id="g6u8k1" type Omit[T, K] = NewProtocol[*[ p for p in Iter[Attrs[T]] if not IsAssignable[p.name, K] ]]👉 @PythonPortal
pip install typeagent.
CHANGELOG.md
👉 @PythonPortalformat
List comprehension проходит по каждому элементу (числу) в my_list. Для каждого числа он форматирует его в строку с разделителями тысяч запятыми, используя строку формата '{:,}'.format(num).
my_list = [10898767, 9876780, 9908763]
new_list = ['{:,}'.format(num) for num in my_list]
print(new_list)
# ['10,898,767', '9,876,780', '9,908,763']
Вывод печатает new_list, который содержит отформатированные строки с разделителями запятыми.
▪️Использование f-строк
Также можно использовать f-строки, чтобы добавить разделители тысяч. Обратите внимание ниже: вместо запятой (,) как разделителя мы используем подчёркивание (_).
my_list = [10898767, 9876780, 9908763]
new_list = [f"{num:_}" for num in my_list]
print(new_list)
# ['10_898_767', '9_876_780', '9_908_763']
Заметили, что в обоих случаях мы используем list comprehension, чтобы добавить разделитель? Крутая штука, правда? 😉
▪️Использование модуля locale
Модуль locale даёт способ форматировать числа с разделителями тысяч в соответствии с текущими настройками локали. Вы можете выставить нужную локаль и использовать метод locale.format_string(). Вот как это выглядит на практике:
import locale
my_list = [10898767, 9876780, 9908763]
formatted_list = []
for num in my_list:
# Set the locale
locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
formatted_list.append(locale.format_string("%d", num, grouping=True))
print(formatted_list)
Этот код проходит по каждому числу в my_list через цикл for. Он задаёт нужную локаль 'en_US.UTF-8' с помощью locale.setlocale(locale.LC_ALL, 'en_US.UTF-8'). Это выставляет локаль на США с кодировкой UTF-8, где для тысяч используются запятые. Дальше locale.format_string('%d', num, grouping=True) форматирует число (num) в строку с разделителями тысяч. Спецификатор формата '%d' означает, что число нужно форматировать как целое, а grouping=True указывает, что разделители тысяч должны быть включены.
👉 @PythonPortal #100daysofpythonabs(). Функция abs() возвращает абсолютное значение любого числа (положительного, отрицательного и комплексного). Ниже показано, как получить список абсолютных значений из списка, где есть и отрицательные, и положительные числа. Используем list comprehension.
list1 = [-12, -45, -67, -89, 34, 67, -13]
print([abs(num) for num in list1])
[12, 45, 67, 89, 34, 67, 13]Также
abs() можно применять к числу с плавающей точкой, и она вернет абсолютное значение. Смотри ниже:
num = -23.12
print(abs(num))
23.12➡️Использование модуля math Если тебе нужны более продвинутые математические функции, можно использовать
fabs() из модуля math. Эта функция всегда возвращает float.
import math
num = -23.12
absolute_value = math.fabs(num)
absolute_value
23.12➡️Использование lambda-функции Можно также использовать
lambda, чтобы превратить отрицательное число в модуль. Код ниже проверяет, меньше ли x нуля (то есть отрицательное ли значение). Если да, возвращает -x, по сути убирая минус и делая число положительным. Если x не отрицательное (больше или равно 0), возвращает x как есть.
num = -23.12
absolute_value = (lambda x: -x if x < 0 else x)(num)
absolute_value
23.12
👉 @PythonPortal #100daysofpythonВсегда пиши код так, будто тот, кому потом его поддерживать, это буйный психопат, который знает, где ты живешь.— Аноним Знаете какие-нибудь забавные имена переменных? 👉 @PythonPortal
max() и метод index()
Можно использовать метод index() вместе с функцией max(), чтобы получить индекс наибольшего числа в списке. В этом примере мы с помощью max() находим самое большое число в списке и передаем его в index() как аргумент. Метод index() вернет индекс первого вхождения наибольшего числа.
In [23]: my_list = [12, 45, 67, 89, 34, 67, 13]
largest_number_index = my_list.index(max(my_list))
largest_number_index
Out[23]: 3
▪️max() и enumerate()
В коде ниже функция max() принимает список и lambda-функцию в качестве аргументов. Мы добавляем enumerate() к списку, чтобы она могла вернуть и число из списка, и его индекс (кортеж). Параметр start в enumerate() задаем так, чтобы нумерация начиналась с позиции 0. lambda-функция используется, чтобы найти максимальное значение по второму элементу каждого кортежа, то есть по значению из my_list.
In [24]: my_list = [12, 45, 67, 89, 34, 67, 13]
max_num = max(enumerate(my_list, start=0),
key = lambda x: x[1])
print('Индекс наибольшего числа:',
max_num[0])
Индекс наибольшего числа: 3
▪️Списковое включение с функцией enumerate()
В коде ниже мы используем списковое включение вместе с enumerate(), чтобы найти индекс самого большого числа в списке. Создаем переменную max_value - в ней хранится максимальное значение из списка. Дальше с помощью enumerate() находим индекс(ы), где значение совпадает с этим максимумом.
In [25]: my_list = [12, 45, 67, 89, 34, 67, 13]
max_value = max(my_list)
max_indices = [idx for idx, val in enumerate(my_list) if val == max_value]
max_indices
Out[25]: [3]
Вывод показывает, что самое большое число находится по индексу 3.
👉 @PythonPortal@property только для O(1) операций
Люди обычно ожидают, что всё, что выглядит как доступ к атрибуту, работает быстро.
Не хочется же жать Ctrl-C на чтении атрибута, потому что там спрятан расчёт уровня Deep Thought на 7,5 миллионов лет:
>>> life.meaning
42
👉 @PythonPortalfor, во втором используется модуль 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
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
