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

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

Open in Telegram

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

Show more
6 955
Subscribers
-224 hours
-67 days
-5930 days
Posts Archive
Что выведет код?
Anonymous voting

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

Генератор выражений: x * x for x in range(10) вычисляет квадрат числа x для каждого числа x в диапазоне от 0 до 9 (то есть от 0 до 9 включительно). 2. set: Функция set() берет все значения, производимые генератором, и добавляет их в множество. Итак, в результате формируется множество, содержащее значения: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81} В Python множество (set) не гарантирует порядок элементов, и при каждом запуске программы в разных версиях языка он будет отличаться.

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

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

for Y in range(5): pass # Операторы циклов имена не локализуют

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

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

Функция pd.set_option() в библиотеке Pandas позволяет настраивать различные параметры отображения и поведения датафрейма, улучшая пользовательский опыт. Она позволяет изменять такие настройки, как максимальное количество отображаемых строк и столбцов, точность представления чисел, форматирование дат и времени, а также задавать бэкенд-движки при чтении файлов Excel, баз SQL и проч. Пользователи могут установить параметры как глобально, так и для конкретных сессий, что позволяет тонко настраивать визуализацию данных под свои нужды. Доступные параметры можно просмотреть с помощью pd.get_option() и pd.describe_option(), что упрощает управление настройками. Документация

Что можно настроить с помощью pd.set_option()?
Anonymous voting

Проще запомнить, кто есть кто, если обратить внимание на тип возвращаемого объекта:

[х * х for х in range (10)] # Списковое включение: строит список
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # Подобно list(генераторное выражение)

(х * х for х in range (10)) # Генераторное выражение:  Генераторное выражение:
<generator object <genexpr> at 0x10451eb50> # Круглые скобки часто необязательны

{x * x for x in range (10)} # Включение множества
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}

{x: x * x for x in range(10)} # Включение словаря,
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

Какая строка на картинке является генераторным выражением?
Anonymous voting

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

Код выводит [(‘a’, ‘x’), (‘b’, ‘y’), (‘c’, ‘z’), (None, ‘1’), (None, ‘2’), (None, ‘3’)], потому что добавляет "заполнители", когда длина последовательностей различается. Строка maxlen = max(len(S) for S in seqs) вычисляет максимальную длину среди всех предоставленных последовательностей — в данном случае это 6. index = range(maxlen) создаёт диапазон от 0 до 5 (включительно), то есть будет 6 итераций. С помощью списка включений формируется результирующий список. Для каждой итерации (с каждым индексом i от 0 до 5) создается кортеж: tuple((S[i] if len(S) > i else pad) for S in seqs) Это выражение проверяет, есть ли элемент с индексом i в последовательности S. Если элемент существует, он добавляется в кортеж, если не существует (что происходит, как в случае со строкой S1 на индексах 3, 4 и 5), добавляется значение pad, которое по умолчанию равно None. - Для i = 0: получаем ('a', 'x') - Для i = 1: получаем ('b', 'y') - Для i = 2: получаем ('c', 'z') - Для i = 3: строка S1 не имеет элемента, поэтому получаем (None, '1') - Для i = 4: строка S1 тоже не имеет элемента, получаем (None, '2') - Для i = 5: строка S1 снова не имеет элемента, получаем (None, '3')

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

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

Код выведет [(‘a’, ‘x’)] из-за расположения return. Функция myzip() принимает произвольное количество последовательностей (в данном случае строки S1 и S2). seqs = [list(S) for S in seqs] преобразует каждую входную последовательность в список — [['a', 'b', 'c'], ['x', 'y', 'z', '1', '2', '3']]. Цикл while продолжает выполняться, пока все списки в seqs содержат хотя бы один элемент. Входные списки имеют по одному элементу на данный момент (['a', 'b', 'c'] и ['x', 'y', 'z', '1', '2', '3']). res.append(...): внутри цикла создается кортеж из первого элемента каждого списка и добавляется в res. Первые элементы будут 'a' и 'x', так что в res добавится кортеж ('a', 'x'). Очень важно отметить, что оператор возврата (return) находится внутри цикла while. Это означает, что функция сразу же вернет res после первой итерации цикла. Таким образом, функция завершает свое выполнение и возвращает res, который на этом моменте содержит [('a', 'x')]. После этого выполнение функции прекращается, и дальнейшие итерации не происходят.

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

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

Функция zip() принимает два или более итерируемых объекта (в данном случае, строки) и создает итератор, который генерирует кортежи, содержащие элементы, исходящие от каждого из итерируемых объектов на соответствующих позициях. Это значит, что zip будет объединять первый элемент S1 с первым элементом S2, второй элемент S1 со вторым элементом S2 и так далее. Поскольку S1 содержит 3 элемента, а S2 — 6 элементов, zip() объединит только столько элементов, сколько есть в наименьшем итерируемом объекте, то есть в S1.