это может быть достигнуто с помощью аналогичного и классического решения проблем ( Сглаживание нерегулярного списка списков ), нет необходимости заново изобретать колесо, просто используйте какой-то метод работы и последующую обработку:
Свести список списков, затем взять минимальное и максимальное значения.
import collections
def flatten(l): # function copied from the link above
for el in l:
if isinstance(el, collections.Iterable) and not isinstance(el, (str, bytes)):
yield from flatten(el)
else:
yield el
lst = [1, 5, [7, 10, []]]
new_list = list(flatten(lst)) # create a list cos we'll be iterating twice on it
print(max(new_list))
print(min(new_list))
результат
10
1
с одной итерацией с ручным циклом:
min_value = None
max_value = None
for v in flatten(lst):
if min_value is None or v < min_value:
min_value = v
if max_value is None or v > max_value:
max_value = v
print(min_value)
print(max_value)
метод flatten
хорош, потому что он не создает временных элементов list
, поэтому нет необходимости выделять лишнюю память.