AlLinik
Вот хороший вариант решения
Palrom выше написал код, только одной строкой.
Он так выглядит, но это ловушка для новичков.
Palrom не знает про временную сложность, поэтому и не понимает, что его код для миллиона элементов будет иметь всё ту же сложность O(n^2) - квадратную сложность - и этот код в худшем случае будет делать миллион миллионов операций, потому что list.count() всегда будет ходить от начала списка до конца списка. Я же написал код с временной сложностью O(n) - линейной сложностью - и в худшем случае этот код для миллиона элементов будет делать всего два миллиона операций, потому что максимально пройдёт только два раза по списку.
Поначалу кажется, что это неважно, думаешь там “а когда там будет миллион элементов? и будет ли там когда-нибудь столько элементов?”, но эти миллионы играют роль не в единичных вызовах, а во множественных. Если этот код выполнять тысячи раз каждый день (а это обычное дело для программ), то оттуда и будут складываться эти миллионы. В совокупности с другими программами это всё будет играть роль, потому что программы пользуются общей ресурсной базой среды, в которой выполняются. Пока одна программа занимает ресурсы, другая программа не может выполняться и ждёт, когда для неё ресурсы освободятся. Время процессора - ресурс, оперативная память - ресурс, постоянная память - ресурс.