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

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

@quiz_python

Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Subscribers
6.91K
Photos
1.4K
Videos
1
Links
126

Showing posts older than #3644 · Back to latest

Older Posts 20 shown
Post #3642 1.18K
#размяться
Post #3641 1.28K
DataFrame.sort_values(by, *, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)


Булевый параметр ascending отвечает за тип сортировки и по умолчанию равен True, т.е. датафрейм сортируется по умолчанию от меньшего к большему.
Post #3639 1.31K
Списковое включение может применяться также как разновидность операции проецирования столбцов. Стандартный API-интерфейс для работы с базами данных SQL в Python возвращает результаты запросов в форме последовательности последовательностей вроде следующей ниже; список представляет таблицу, кортежи — строки, а элементы в кортежах — значения столбцов:

listoftuples = [('bob', 35, 'mgr'), ('sue', 40, 'dev'), ('jack', 51, 'cio')]


С использованием цикла for можно было бы извлечь все значения из выбранного
«столбца» вручную, но списковые включения способны выполнить такую работу за один шаг, к тому же быстрее:

[age for (name, age, job) in listoftuples] # 35, 40, 52
Post #3637 1.25K
#размяться
Post #3636 1.27K
Мы можем использовать списковые включения для комбинирования значений множества матриц. В задаче выше строится плоский список, который содержит результат попарного перемножения матриц.
Post #3634 1.26K
#размяться
Post #3633 1.25K
В данном случае однократное списковое включение «сплющивает» матрицу до вектора, т.е. списка чисел. Чтобы понять такой код, его можно преобразовать к виду простых операторов:

res = []
for row in М: # Эквиваленты в виде операторов
for col in row: # Отступ для частей, находящихся дальше справа
res.append(col + 10)


Чтобы сохранить матрицу, достаточно использовать двойное списковое включение:

[[col + 10 for col in row] for row in M]
Post #3631 1.16K
#ловушка
Post #3630 1.21K
С применением функции 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]
Post #3627 1.22K
#размяться
Post #3626 1.26K
Мы всегда можем индексировать по строкам и столбцам внутри строк с использованием нормальных операций индексации:

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]
Post #3624 1.19K
#размяться
Post #3623 1.22K
Это списковое включение комбинирует четные числа от 0 до 4 с нечетными числами от 0 до 4, поскольку range() генерирует ряд чисел, НЕ ВКЛЮЧАЯ 5. Конструкции if отфильтровывают элементы на каждой итерации. Вот эквивалентный код на основе операторов:

res == []
for х in range(5) :
if x % 2 == 0:
for у in range(5) :
if у % 2 == 1:
res.append(x, y)

res # [(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →