22. Сказать результат формирования строк с результатами целочисленного деления
Условие задачи Нужно сказать результат выполнения кода ниже и объяснить как он работает
a = [1, 2, 3, 4, 5, 6]
b = [2, 3, 4, 5, 6, 7]
c = [f"{x} // {y} = {x // y}" for x in a for y in b if x // y > 1]
for i in c:
print(f"{i = }")
Спойлеры к решению
Подсказки
- Здесь используется вложенный list comprehension.
- Сначала берётся элемент
xиз спискаa. - Затем для каждого
xперебираются всеyиз спискаb. - В результат попадают только те пары, где
x // y > 1. - Оператор
//выполняет целочисленное деление. - Условие
x // y > 1означает, что результат деления должен быть минимум2.
Решение
a = [1, 2, 3, 4, 5, 6]
b = [2, 3, 4, 5, 6, 7]
c = [f"{x} // {y} = {x // y}" for x in a for y in b if x // y > 1]
for i in c:
print(f"{i = }")
Результат:
i = '4 // 2 = 2'
i = '5 // 2 = 2'
i = '6 // 2 = 3'
i = '6 // 3 = 2'
Разбор подходящих пар:
1 // 2 = 0 -> не подходит
2 // 2 = 1 -> не подходит
3 // 2 = 1 -> не подходит
4 // 2 = 2 -> подходит
5 // 2 = 2 -> подходит
6 // 2 = 3 -> подходит
6 // 3 = 2 -> подходит
Список c после выполнения list comprehension будет таким:
[
"4 // 2 = 2",
"5 // 2 = 2",
"6 // 2 = 3",
"6 // 3 = 2"
]
Затем цикл:
for i in c:
print(f"{i = }")
выводит каждый элемент списка. Запись f"{i = }" показывает не только значение переменной, но и её имя. Так как i является строкой, значение выводится в кавычках.