Работа с таблицами чисел — важный навык, особенно если вы анализируете данные.
Попробуем найти самое большое число в такой таблице.
Напишите функцию max2D(matrix)
, которая принимает список списков целых чисел и возвращает максимальный элемент.
Примечание
В решении не должно быть вызовов требуемых функций.
Пример
Ввод
result = max2D([[1, 1, 1], [1, 2, 1], [1, 1, 1]])
Вывод
result = 2
Ввод
result = max2D([[-5, -43, 72, 89], [-40, 92, -1, -73], [30, -75, 23, 94]])
Вывод
result = 94
Решение
Классическая задача на поиск максимума среди элементов – Принимаем за максимум первый элемент, затем пробегаемся по элементам и если нашли больший, чем текущий максимум – запоминаем его.
Три решения: классическое – через циклы, через строчное выражение и с помощью рекурсии.
Третье решение абегает вперед и представлено не как рекомендованное, а чтобы показать дополнительные возможности рекурсии при решении подобных задач. РЕШЕНИЕ НЕ ПРОХОДИТ ТЕСТ, потому, что вызывать функцию запрещено по условию задачи. Несомненно, код выглядит более громоздким и запутанным, но его сила в том, что ему вообще без разницы какова вложенность списков и насколько однородны эти списки. Он найдет максимум даже в таком списке: [[-5, -43, 72, 89], [-40, 92, [-1, -73]], [30, -75, 23, 94], 100]
Решение
Посмотреть код
def max2D(matrix):
max_value = matrix[0][0]
for row in matrix:
for number in row:
if number > max_value:
max_value = number
return max_value
Решение
def max2D(matrix):
return max(max(row) for row in matrix)
Решение
def max2D(matrix, maximum=None):
if not matrix:
return maximum
for element in matrix:
if isinstance(element, list):
nested_max = max2D(element, maximum)
if nested_max is not None and (maximum is None or nested_max > maximum):
maximum = nested_max
elif isinstance(element, (int, float)):
if maximum is None or element > maximum:
maximum = element
return maximum