Вашему решению предоставлено множество numbers
.
Напишите одно выражение, которое находит максимальное произведение двух различных чисел из этого множества.
Примечание
В решении не должно быть ничего, кроме выражения.
Подсказка:
Не будем сосредотачиваться на оптимальном решении.
Для перебора всех возможных пар можно воспользоваться вложенными циклами в выражении:
# Опечатка. вместо number нужно использовать numbers
(... for first in numbers for second in number if first != second)
Пример
Ввод
numbers = {1, 2, 3, 4, 5}
Вывод
20
Ввод
numbers = {2, 4, 5, 7, -10, -8, 10, -9, -1}
Вывод
90
Решение
Задание коварно тем, что в подсказке есть опечатка, надеюсь рано или поздно ее исправят.
В целом решение с правильной подсказкой слишком простое. Все что нам нужно сделать – вставить вместо троеточия в подсказке произведение первого и второго чисел, а после найти максимальное значение, поместив всю эту красоту в функцию max().
Для тех кого заинтересовал более хороший способ решения этой задачи, он прост, но не реализуем в рамках темы – находим два самых больших по модулю положительных и отрицательных значения, предварительно установив их в 0. Перемножаем между собой положительные и отдельно отрицательные. Смотрим какое из полученных чисел больше. Этот алгоритм дает ответ за один проход списка.
Посмотреть код
Решение
max(first * second for first in numbers for second in numbers if first != second)