Что выведет код?
Anonymous Quiz
26%
[('a', 'x')]
51%
[('a', 'x'), ('b', 'y'), ('c', 'z')]
13%
[('abc', 'xyz123')]
9%
Error
Код выведет
Функция
Цикл
Очень важно отметить, что оператор возврата (
[(‘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')]
. После этого выполнение функции прекращается, и дальнейшие итерации не происходят.Код выводит
Строка
С помощью списка включений формируется результирующий список. Для каждой итерации (с каждым индексом i от 0 до 5) создается кортеж:
Это выражение проверяет, есть ли элемент с индексом
- Для
- Для
- Для
- Для
- Для
- Для
[(‘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()?
Anonymous Quiz
20%
Сколько строк отображать при вызове датафрейма
11%
Какой фреймворк использовать для построения графика
4%
Сколько знаков после запятой показывать
65%
Все вышеперечисленное
Функция
Документация
pd.set_option()
в библиотеке Pandas позволяет настраивать различные параметры отображения и поведения датафрейма, улучшая пользовательский опыт. Она позволяет изменять такие настройки, как максимальное количество отображаемых строк и столбцов, точность представления чисел, форматирование дат и времени, а также задавать бэкенд-движки при чтении файлов Excel, баз SQL и проч. Пользователи могут установить параметры как глобально, так и для конкретных сессий, что позволяет тонко настраивать визуализацию данных под свои нужды. Доступные параметры можно просмотреть с помощью pd.get_option()
и pd.describe_option()
, что упрощает управление настройками.Документация
Генератор выражений:
2.
В Python множество (set) не гарантирует порядок элементов, и при каждом запуске программы в разных версиях языка он будет отличаться.
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 Quiz
65%
{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
18%
{0, 4, 16, 36, 64}
14%
{'0': 0, '2': 4, '4': 16, '6': 36, '8': 64}
3%
Error
x * x for x in range(10)
вычисляет квадрат числа x для каждого четного числа x в диапазоне от 0 до 9 (то есть 0, 2, 4, 6, 8
).Фигурные скобки и
x:
обозначают генерацию словаря, где в качестве ключа будет выступать исходный четный x (то есть числа 0, 2, 4, 6, 8
).Ключи словаря тоже не упорядочиваются, потому в разных версиях интерпретаторов мы будем получать разный порядок ключей.