Условие: «Дан список, содержащий целые нечетные числа . Все числа кроме одного – одинаковы. Написать функцию, принимающую этот список и возвращающую то самое не одинаковое число»
Решение № 1.
Используем встроенный метод списков - .count(). Он позволяет подсчитать вхождения в списке.
Перебираем в цикле значения элементов списка. Как только находим элемент, значение которого, всего одно в списке – возвращаем это значение.
Решение № 2.
Логический способ решения задачи. С помощью метода .sort() сортируем полученный функцией список. Теперь у нас искомое число будет либо первым либо последним в списке. Причем если первый элемент списка равен второму, то оно будет последним. Теперь оформляем это в коде.
Метод .sort() и функция sorted() подробно описаны в решении задачи № 3.
Решение № 3.
С помощью функции mode() из модуля математической статистики statistics. mode() возвращает наиболее часто встречающееся значение в списке.
Далее – ищем элемент, который не равен, тому, что вернет mode() - это то, что нам нужно.
Решение № 4.
В этом решении мы будем использовать функцию min(). Как понятно из названия, эта функция возвращает минимальное значение. Ей можно передавать как один объект, так и несколько однотипных объектов. Кроме того, ей непосредственно можно передать в качестве аргументов множество чисел. Например, если ей передать список x = [4,9,3,0]:
min (x)
она вернет 0
Кроме того, ей можно передать необязательный именной параметр key, которому может быть присвоена какая-нибудь встроенная одноаргументная функция или метод. Эта функция или метод должны выполнить предварительные действия со списком. Написано мудрено, но на практике все намного проще и сейчас вы в этом убедитесь.
min (user_list, key=user_list.count)
Подставляем в качестве ключа метод .count(). Поэтому функция min() вернет элемент с минимальным количеством вхождений.
В Python имеется и функция max(). Она возвращает максимальное значение.
У этой задачи есть как минимум еще 3-4 варианта решений, но слишком хорошо - это уже плохо. Если у Вас, уважаемый читатель, есть более элегантные способы решения этой задачи – прошу поделиться ими!
Конструктивная критика приветствуется.
Эта статья была полезной? Поставьте лайк и поделитесь с друзьями в социальных сетях!
Оставьте отзывы и замечания!
Задача для закрепления: ««Дан список оценок 17 студентов по контрольной работе в виде list [‘5’, ‘4’,’ 5’, ‘3’ ….]. Написать функцию, возвращающую наиболее популярную оценку»
Предыдущая задача:
Решение практической задачи № 3
Более полное описание подходов, методов и функций, применяемых в этом решении:
База знаний
Функции: min(), max()
Методы: .count(), .sort()
Типы данных: list (списки)
Модули: statistics ( mode())