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

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

رفتن به کانال در Telegram

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

نمایش بیشتر
7 125
مشترکین
اطلاعاتی وجود ندارد24 ساعت
+67 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
#размяться
#размяться

Код выведет [(‘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.

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

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

L, S = [1, 2, 3], 'spam'

for i in range(len(S)): # Цикл с подсчетом 0.3
 S = S[1:] + S[:1] # Перемещение головного элемента в конец
 print(S, end=' ')

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

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

Расскажите, откуда вы?
Anonymous voting

Что будет, если не указать pd.read_csv() явно, какой столбец использовать в качестве индекса?
Anonymous voting

Код выводит S P A M, а не SPAM, потому что используется оператор распаковки *, который распаковывает элементы генератора и передает их как отдельные аргументы в функцию print(). - Генераторное выражение: (x.upper() for x in 'spam') создает генератор, который преобразует каждую букву строки 'spam' в верхний регистр, выдавая S, P, A, M по одному. - Оператор * (распаковка) передает все отдельные элементы генератора как отдельные аргументы в функцию print(). Это эквивалентно вызову print('S', 'P', 'A', 'M'). - По умолчанию print() разделяет свои аргументы пробелами при выводе. Поэтому получаем итоговый результат: S P A M.

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

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

Аргументы со звездочкой способны распаковывать итерируемый объект в индивидуальные аргументы. Однако в нашем примере также присутствует генератор.

def f(a, b, c):
    print('%s, %s и %s' % (a, b, c))

# Распаковка значений генераторного выражения
f(*(i for i in range(3)))
Генераторы вместо построения результирующего списка в памяти возвращают итерируемый объект. Прием применим также к словарям и представлениям:

D = dict(а='Bob', b='dev', с=40.5) 

# Нормальные ключевые аргументы
f(a='Bob’, b='dev’, с=40.5) # Bob, dev и 40.5

# Распаковка словаря: ключ=значение
f(**D) # Bob, dev и 40.5

# Распаковка итератора ключей
f(*D) # b, c и a

# Распаковка итератора представления
f(*D.values()) # Bob, dev и 40.5\nNone
None выводится, потому что это означает последний шаг итерирования (StopIteration). Подробнее про это читайте в этом посте.

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

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

В версии Python 3.3 и выше есть расширенный синтаксис для оператора yield, который делает возможным делегирование работы подгенератору с помощью конструкции from генератор. В простых ситуациях он эквивалентен выдаче в цикле for — в следующем коде вызов list заставляет генератор выпустить все свои значения, а включение в круглых скобках является генераторным выражением:

def both(N):
 for i in range(N): yield i
 for i in (x ** 2 for x in range(N)): yield i

print(list(both(5))) # [0, 1, 2, 3, 4, 0, 1, 4, 9, 16]

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