Python: задачки и вопросы
7.87K subscribers
1.16K photos
1 video
1 file
73 links
Вопросы и задачки для подготовки к собеседованиям и прокачки навыков

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

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

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

Другие наши проекты: https://tprg.ru/media
Download Telegram
Код выведет [(‘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')]. После этого выполнение функции прекращается, и дальнейшие итерации не происходят.
Код выводит [(‘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 Quiz
12%
1
47%
2
3%
3
13%
4
25%
Все
Проще запомнить, кто есть кто, если обратить внимание на тип возвращаемого объекта:


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

Документация
Что выведет код?
Anonymous Quiz
54%
99
28%
4
8%
5
10%
Error
for Y in range(5): pass # Операторы циклов имена не локализуют
Генератор выражений: 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) не гарантирует порядок элементов, и при каждом запуске программы в разных версиях языка он будет отличаться.
x * x for x in range(10) вычисляет квадрат числа x для каждого четного числа x в диапазоне от 0 до 9 (то есть 0, 2, 4, 6, 8).

Фигурные скобки и x: обозначают генерацию словаря, где в качестве ключа будет выступать исходный четный x (то есть числа 0, 2, 4, 6, 8).

Ключи словаря тоже не упорядочиваются, потому в разных версиях интерпретаторов мы будем получать разный порядок ключей.