uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку

Python: задачки и вопросы

Python: задачки и вопросы

Відкрити в Telegram

Вопросы и задачки для подготовки к собеседованиям и прокачки навыков Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media

Показати більше
6 864
Підписники
-224 години
-137 днів
-4730 днів
Архів дописів
1. Создание генератора:

G = gen()
В этой строке создается объект генератора G, но код внутри функции gen() не начинает выполняться, пока не будет вызван next(G). 2. Первый вызов next(G):

print(next(G)) # 0
Когда вы вызываете next(G) в первый раз, генератор начинает выполнение с начала функции gen(). Внутри функции запускается цикл for и выполняется первая итерация, где i становится равным 0. Затем происходит yield i, что означает, что значение 0 возвращается, и генератор приостанавливается. Значение 0 выводится на экран. 3. Второй вызов next(G):

print(next(G))  # None 1
Теперь, когда вы вызываете next(G) во второй раз, генератор продолжает выполнение с той точки, где он был приостановлен (после yield). В этот момент выполнение доходит до X = yield i, и так как вызывается next(G) без передачи аргумента, X будет установлено в значение None. Затем срабатывает print(X), и выводится None. Затем генератор продолжает выполнение, и значение X становится равным 1.

Что выведет код?
Anonymous voting

#ловушка
#ловушка

Эта задача — логическое продолжение предыдущей. Мы имеем дело с генераторной функцией. Значения отправляются генератору G путем вызова G.send(значение). Затем код генератора возобновляет выполнение, и выражение yield в генераторе возвращает значение, переданное send. Если вызывается обычный метод G.__next_() (или его эквивалент next(G)) для продвижения вперед, тогда yield просто возвращает None.

>>> next(G) # Сначала должен вызываться next(), чтобы запустить генератор
... 0
>>> G.send(77) 
... 77
... 1

Скажите рутине STOP✋ 👉 Ускорьте рабочие процессы и освободите время для более интересных дел — с помощью курса Слёрма «Pytho
Скажите рутине STOP✋ 👉 Ускорьте рабочие процессы и освободите время для более интересных дел — с помощью курса Слёрма «Python для инженеров». Это обучение, заточенное на инженеров — в нём нет ничего лишнего, только то, что необходимо именно вам. На курсе вы научитесь: 🔹 писать эффективный и поддерживаемый код; 🔹 писать Kubernetes-операторы и модули для Ansible; 🔹 создавать, использовать и тестировать свои API; 🔹 взаимодействовать с инструментами CI/CD, CVS и DevOps системами.
Для того, чтобы вы смогли «пощупать» курс изнутри, даём бесплатный пробный доступ на 3 дня. А при покупке даём в подарок мини-курс «Python, Чат-боты и DevOps» и видеокурс «Gitlab CI/CD».
Набор до 28 января. Познакомиться с программой и занять своё место на курсе — по ссылке. Реклама ООО «Слёрм» ИНН 3652901451

Что выведет код?
Anonymous voting

#ловушка
#ловушка

Генератор — это специальная функция, которая возвращает итератор, с помощью которого можно обойти некоторую последовательность значений. В крупных программах генераторы могут быть лучше в плане памяти и производительности. Они позволяют функциям избежать выполнения всей работы заранее, что особенно полезно, когда результирующие списки большие или получение каждого значения требует длительных вычислений. Генераторы распределяют время, необходимое для производства серии значений, по всем итерациям цикла.

def gen():
    for i in range(10):
        X = yield i
        print(X)

G = gen()
print(next(G)) # Сначала должен вызываться next(), чтобы запустить генератор
К протоколу генераторных функций добавлен метод next. Он осуществляет переход на следующий элемент в серии результатов, а также снабжает вызывающий код возможностью взаимодействия с генератором для влияния на его работу. Формально yield теперь имеет форму не оператора, а выражения, которое возвращает элемент, переданный next.

Что выведет код?
Anonymous voting

#размяться
#размяться

Чем отличается генераторная функция с yield от классической?
Anonymous voting

#размяться
#размяться

DataFrame.sort_values(by, *, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)
Булевый параметр ascending отвечает за тип сортировки и по умолчанию равен True, т.е. датафрейм сортируется по умолчанию от меньшего к большему.

Как по умолчанию сортирует pandas.sort_values()?
Anonymous voting

Списковое включение может применяться также как разновидность операции проецирования столбцов. Стандартный API-интерфейс для работы с базами данных SQL в Python возвращает результаты запросов в форме последовательности последовательностей вроде следующей ниже; список представляет таблицу, кортежи — строки, а элементы в кортежах — значения столбцов:
listoftuples = [('bob', 35, 'mgr'), ('sue', 40, 'dev'), ('jack', 51, 'cio')]
С использованием цикла for можно было бы извлечь все значения из выбранного «столбца» вручную, но списковые включения способны выполнить такую работу за один шаг, к тому же быстрее:
[age for (name, age, job) in listoftuples] # 35, 40, 52

Что выведет код?
Anonymous voting

#размяться
#размяться

Мы можем использовать списковые включения для комбинирования значений множества матриц. В задаче выше строится плоский список, который содержит результат попарного перемножения матриц.

Что выведет код?
Anonymous voting

#размяться
#размяться