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

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

Открыть в Telegram

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

Больше
6 955
Подписчики
-224 часа
-67 дней
-5930 день
Архив постов
Чем отличается генераторная функция с 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

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

В данном случае однократное списковое включение «сплющивает» матрицу до вектора, т.е. списка чисел. Чтобы понять такой код, его можно преобразовать к виду простых операторов:
res = []
for row in М: # Эквиваленты в виде операторов
    for col in row: # Отступ для частей, находящихся дальше справа
        res.append(col + 10)
Чтобы сохранить матрицу, достаточно использовать двойное списковое включение:
[[col + 10 for col in row] for row in M]

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

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

С применением функции range() генерируется список смещений и производится индексация с одинаковыми номерами строк и столбцов, выбирающая М[0][0], затем М[1][1] и т.д. Во второй строке индекс столбца уравновешивается для извлечения М[0][2], М[1][1] и т.д. (мы предполагаем, что матрица имеет равное количество строк и столбцов):
M = [[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9]]

# Диагональ
[M[i][i] for i in range(len(M))] # [1, 5, 9]

# Обратная диагональ
[M[i][len(M)-1-i] for i in range(len(M))] # [3, 5, 7]

Узнай грейд и рыночную зарплату + получи план развития бесплатно На связи ШОРТКАТ. Мы провели 300+ собеседований с менторами
Узнай грейд и рыночную зарплату + получи план развития бесплатно На связи ШОРТКАТ. Мы провели 300+ собеседований с менторами из бигтеха, собрали ключевые вопросы с собесов и сделали тест, который поможет оценить навыки. Вот как это работает: 1. Ты проходишь экспресс-тест за 20 минут или его расширенную версию 2. Бронируешь звонок для презентации обратной связи по ответам — можем встретиться уже на следующий день! 3. К созвону проверим ответы, чекнем СV и на основе этого оценим твой грейд.  Ещё подскажем зарплату в рынке, построим план развития до следующего уровня и расскажем про наш новый продукт, который поможет получить выгодный оффер в 2025 году.  Переходи в бота и проходи тест бесплатно, а дальше расскажем, что и как: @shortcut_python_bot Реклама. ООО «Шорткат» ИНН 9731139396, erid: 2W5zFHw2ti4

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

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

Мы всегда можем индексировать по строкам и столбцам внутри строк с использованием нормальных операций индексации:
M = [[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9]]

М[1] # [4, 5, 6]

М[1][2] # 6 (Строка 2, элемент 3)
Cписковые включения являются мощным инструментом для обработки таких структур, потому что они автоматически просматривают строки и столбцы. Скажем, хотя такая структура хранит матрицы по строкам, для сбора значений второго столбца мы можем просто проходить по строкам и извлекать желаемый столбец или проходить по позициям в строках с индексаций в ходе дела:
[row[1] for row in M] # [2, 5, 8]

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

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