Как найти максимум и минимум в списке Python?
Нужно найти наибольшее и наименьшее число в списке. Знаю про max() и min(), но как ещё узнать индекс этого элемента? И как найти максимум по какому-то признаку, если в списке не числа, а словари?
1 ответ
Для чисел всё просто — встроенные max() и min():
nums = [3, 7, 1, 9, 4]
print(max(nums)) # 9
print(min(nums)) # 1
Чтобы узнать индекс максимума, найдите само значение и спросите его позицию через .index():
i = nums.index(max(nums)) # 3 (позиция девятки)
Если в списке не числа, а объекты, и максимум нужен по признаку — передайте key, как в sorted:
people = [{'name': 'Аня', 'age': 30}, {'name': 'Боря', 'age': 25}]
oldest = max(people, key=lambda p: p['age']) # словарь Ани
key говорит, по чему сравнивать, а возвращается сам элемент (целый словарь), а не значение ключа. Это частая путаница: max с key отдаёт не максимальный возраст, а человека с максимальным возрастом.
Главная ловушка — пустой список. max([]) падает с ValueError. Защититесь параметром default:
max(nums, default=0) # вернёт 0, если список пуст
И ещё: не называйте переменные max или min — затрёте встроенные функции, и дальше в коде они перестанут работать.