Python вопросы с собеседований
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd
Ko'proq ko'rsatish📈 Telegram kanali Python вопросы с собеседований analitikasi
Python вопросы с собеседований (@python_job_interview) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 24 822 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 5 258-o'rinni va Rossiya mintaqasida 26 472-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 24 822 obunachiga ega bo‘ldi.
25 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -44 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.01% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 2.76% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 492 marta ko‘riladi; birinchi sutkada odatda 684 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 6 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent github, api, собеседование, git, docker kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Вопросы с собеседований по Python
@workakkk - админ
@machinelearning_interview - вопросы с собесдований по Ml
@pro_python_code - Python
@data_analysis_ml - анализ данных на Python
@itchannels_telegram - 🔥 главное в ит
РКН: clck.ru/3FmrFd”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 27 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
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
Редкая штука, которую приятно знать.