Python вопросы с собеседований
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd
Show more📈 Analytical overview of Telegram channel Python вопросы с собеседований
Channel Python вопросы с собеседований (@python_job_interview) in the Russian language segment is an active participant. Currently, the community unites 24 822 subscribers, ranking 5 258 in the Technologies & Applications category and 26 472 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 24 822 subscribers.
According to the latest data from 25 August, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -44 over the last 30 days and by 0 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 6.01%. Within the first 24 hours after publication, content typically collects 2.76% reactions from the total number of subscribers.
- Post reach: On average, each post receives 1 492 views. Within the first day, a publication typically gains 684 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 6.
- Thematic interests: Content is focused on key topics such as github, api, собеседование, git, docker.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Вопросы с собеседований по Python
@workakkk - админ
@machinelearning_interview - вопросы с собесдований по Ml
@pro_python_code - Python
@data_analysis_ml - анализ данных на Python
@itchannels_telegram - 🔥 главное в ит
РКН: clck.ru/3FmrFd”
Thanks to the high frequency of updates (latest data received on 27 August, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
collections.deque — двусторонняя очередь, оптимизированная для быстрых операций с обоих концов.
from collections import deque
queue = deque(["a", "b", "c"])
queue.append("d") # добавить справа
queue.appendleft("z") # добавить слева
queue.pop() # удалить справа
queue.popleft() # удалить слева
У deque добавление и удаление с краёв выполняются за O(1). У списка операция pop(0) требует сдвига остальных элементов и работает за O(n).
Ещё одна полезная возможность — циклический сдвиг:
queue.rotate(1) # сдвиг вправо
queue.rotate(-1) # сдвиг влево
Подходит для очередей задач, скользящих окон, буферов и алгоритмов обхода графов.zip() прекращает работу, когда заканчивается самый короткий список:
x = [1, 2, 3, 4, 5]
y = ["a", "b", "c"]
print(list(zip(x, y)))
# [(1, "a"), (2, "b"), (3, "c")]
Чтобы сохранить все элементы, используйте zip_longest()
from itertools import zip_longest
print(list(zip_longest(x, y)))
# [(1, "a"), (2, "b"), (3, "c"), (4, None), (5, None)]
Для пустых позиций можно указать своё значение:
result = zip_longest(
x,
y,
fillvalue="нет значения",
)```
Полезно при объединении таблиц, колонок и данных из источников разной длины.
#Python #Programming #DataProcessingregex 1.13 появился макрос regex!.
Важно: это не compile-time regex.
Он не компилирует регулярку на этапе сборки.
Смысл другой: макрос закрывает частый паттерн, когда вы используете что-то вроде std::sync::LazyLock, чтобы регулярное выражение компилировалось примерно один раз, а не при каждом вызове.
То есть вместо ручной обёртки вокруг lazy-инициализации теперь есть более удобный встроенный способ.
PR: github.com/rust-lang/regex/pull/1371
t = ([],)
try:
t[0] += [1]
except TypeError as e:
print("Ошибка:", type(e).__name__)
print(t)
Многие думают:
Ошибка: TypeError
([],)
Но Python выведет:
Ошибка: TypeError
([1],)
Почему?
`t` — tuple, его нельзя менять.
Но внутри tuple лежит список, а список менять можно.
Оператор `+=` сначала мутирует список:
```python
[] -> [1]
```
А потом Python пытается записать результат обратно в tuple:
```python
t[0] = ...
```
И вот тут падает `TypeError`.
Итог странный: ошибка была, но данные уже изменились.
Главный урок:
immutable-контейнер не делает вложенные объекты immutable.
Если внутри tuple лежит list, этот list всё ещё можно изменить.
funcs = []
for i in range(3):
funcs.append(lambda: i)
print([f() for f in funcs])
Многие думают:
[0, 1, 2]
Но Python выведет:
[2, 2, 2]
Почему?
`lambda` не запоминает значение `i` в момент создания.
Она запоминает саму переменную.
Когда цикл закончился, `i` уже равно `2`.
Поэтому все функции смотрят на одно и то же последнее значение.
Правильный фикс:
```python
funcs = []
for i in range(3):
funcs.append(lambda i=i: i)
print([f() for f in funcs])
```
Теперь будет:
```python
[0, 1, 2]
```
Хитрость простая:
если создаёшь функцию в цикле — фиксируй значение через аргумент по умолчанию.iter() только для списков, но у него есть второй режим:
iter(callable, sentinel)
Он вызывает функцию снова и снова, пока она не вернёт sentinel.
Например, читать большой файл кусками без while True:
with open("video.mp4", "rb") as f:
for chunk in iter(lambda: f.read(8192), b""):
process(chunk)
Что происходит:
• lambda читает по 8192 байта
• когда файл закончится, read() вернёт b""
• цикл сам остановится
Выглядит мелко, но это чистый и питоновский способ убрать вечные:
while True:
chunk = f.read(8192)
if not chunk:
break
Редкая штука, которую приятно знать.