Посчитать количество уникальных элементов в списке?
У меня есть список, к примеру [0, 1, 1, 3, -1, 3] . Результат должен быть «4». Не понимаю, как это реализовать, возможно есть какая-то функция?
Отслеживать
25k 4 4 золотых знака 20 20 серебряных знаков 36 36 бронзовых знаков
задан 20 дек 2020 в 18:27
33 1 1 серебряный знак 6 6 бронзовых знаков
Возможно, стоит уже учить язык и начать читать про базовые типы данных?
20 дек 2020 в 18:33
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
lst = [0, 1, 1, 3, -1, 3] print(len(set(lst))
В принципе, это можно и вручную сделать через словарь, но есть готовый тип данных для хранения уникальных элементов set (множество).
Отслеживать
ответ дан 20 дек 2020 в 18:31
68k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
arr = [0, 1, 1, 3, -1, 3]
print(len(set(arr)))
arr2 = [] for i in arr: if i not in arr2: arr2.append(i) print(len(arr2))
print(len([i for i in enumerate(sorted(arr)) if i[0] == 0 or i[1] != sorted(arr)[i[0] - 1]]))
print(len([i for i in zip(sorted(arr), sorted(arr)[1:] + [sorted(arr)[0]]) if i[0] != i[1]]))
print(len([i for i in range(len(arr)) if min(sorted(arr)[i:]) != min(sorted(arr)[i - 1:])]))
print(len([i for i in range(len(arr)) if arr[i] not in arr[i + 1:]]))
print(len([i for i in range(len(arr)) if arr[i:].count(arr[i]) == 1]))
- хватит разврата. и откопал стюардессу
Отслеживать
ответ дан 20 дек 2020 в 18:43
37.2k 4 4 золотых знака 27 27 серебряных знаков 70 70 бронзовых знаков
Только надо всё же упомянуть, что для больших списков всё кроме множества будет работать медленно )
21 дек 2020 в 8:40
это да, но вот интересный вопрос — если диапазон значений огромный в списке, чтоб нельзя было O(1) устроить, то есть ли способ подсчитать кол-во уникальных значений быстрее, чем чем через set
21 дек 2020 в 8:45
print(sum(arr[i] not in arr[:i]for i in range(len(arr)))) print(len()) print(len()) print(len())
Отслеживать
ответ дан 20 дек 2020 в 18:59
19.6k 6 6 золотых знаков 22 22 серебряных знака 56 56 бронзовых знаков
Корректное решение требует определённых усилий. Первое что нужно — функция которая умеет считать длину генератора. Так как мы оптимизируем решение по памяти, то len(list(. )) не подходит. Вот одно из из самых простых и ясных решений:
def count(a): return max(enumerate(a, 1), default=(0, None))[0]
Сосчитаем одинаковые соседние элементы в списке. На этот раз нам не нужно экономить память так как на входе у нас список (или кортеж, или строка — решение достаточно универсальное):
def n_duplicates(a): return count(None for a, b in zip(a[:-1], a[1:]) if a == b)
К сожалению, исходный список может иметь несоседние одинаковые элементы. Очевидно, их можно сделать соседними с помощью перестановки. Хотя мы не знаем какая именно перестановка нам нужна, мы точно знаем что это перестановка. Переберём перестановки, нам нужна та где количество дубликатов самое большое. Этот максимум вычтем из длины исходного массива:
def n_uniques(a): return len(a) - max(n_duplicates(b) for b in itertools.permutations(a))
Решение достаточно изящно и отлично работает:
@>>> print(n_uniques([0, 1, 1, 3, -1, 3])) 4
Как посчитать количество элементов в Python?
Статья с подробным обзором способа подсчета количества элементов в Python.
Введение
Скорее всего популярность этого вопроса у новичков входит в категорию ТОП-10. Не удивительно, ведь python очень часто используют для обработки данных и подсчитать их количество это маст хев
Функция len
Не будем растягивать прелюдию в статье и перейдем сразу к обзору функции len
len(object)
Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (строка, байт, кортеж, список или диапазон) или коллекция (словарь и множества (set и frozenset)).
Так выглядит встроенная справа о функции len в интерактивной оболочке python
Так же дополнительно есть информация в официальной документации языка https://docs.python.org/3/library/functions.html#len
А еще вы можете переопределить метод len в ваших структурах. Для этого опишите магический метод __len__ внутри вашего класса.
Заключение
В данной руководстве мы ознакомились со способом подсчета элементов в Python
Как найти количество элементов в объекте Python? Подсчитываем число элементов в списке, массиве, кортеже
В этой статье мы рассмотрим, как определить количество элементов в объекте Python и при необходимости подсчитать их сумму. Также увидим, как подсчитать количество вхождений конкретного элемента.
Итак, представим, что у нас есть следующий массив:
array = [6,2,7,4,8,1]По условию задачи мы хотим определить, сколько элементов в данном массиве, и какова сумма всех этих элементов.
В первую очередь, вспомним, что в языке программирования Python существует специальная функция, возвращающая длину списка, массива, последовательности и так далее — это len(x) , где x — наша последовательность.
Если разобраться, длина последовательности из чисел — это одновременно и количество самих цифр, поэтому мы можем решить поставленную задачу следующим образом:
print(len(array)) 6 Press any key to continue . . .А для подсчёта суммы можем занести перечисление массива Python в цикл:
array = [6,2,7,4,8,1] sum = 0 for i in range(len(array)): sum = array[i] print(sum)В принципе, вопрос решён. Но, по правде говоря, перебор целочисленного массива с помощью цикла для получения суммы элементов массива — это, всё же, костыль)). Дело в том, что в Python существует встроенная функция sum() . Она вернёт нам сумму без лишних телодвижений.
def main(): array = [1,6,3,8,4,9,25,2] print(sum(array)) if name == 'main': main() 58 Press any key to continue . . .Python: количество вхождений конкретного элемента
Бывает, нам надо подсчитать число вхождений определённых элементов в списке и вернуть найденное значение. Для этого в Python есть метод count() . Вот его синтаксис:
list.count(x)Метод принимает аргумент x, значение которого нас интересует. И возвращает число вхождений интересующего элемента в список:
# объявляем список website_list = ['otus.ru','includehelp.com', 'yandex.by', 'otus.ru'] # подсчитываем вхождения 'otus.ru' count = website_list.count('otus.ru') print('otus.ru found',count,'times.') # подсчитываем вхождения 'yandex.by' count = website_list.count('yandex.by') print('yandex.by found',count,'times.')Итог будет следующим:
otus.ru found 2 times. yandex.by found 1 times.Также этот метод успешно работает и с кортежами:
# объявляем кортеж sample_tuple = ((1,3), (2,4), (4,6)) # условные вхождения (1,2) count = sample_tuple.count((1,2)) print('(1,2) found',count,'times.') # условные вхождения (1,3) count = sample_tuple.count((1,3)) print('(1,3) found',count,'times.')(1,2) found 0 times. (1,3) found 1 times.Вот и всё, теперь вы знаете, как подсчитывать количество элементов в списке, массиве, кортеже в Python.
Python. Задача о нахождении количества уникальных объектов в списке. Два подхода.
Даны следующие условия: Реализуйте программу, которая будет вычислять количество различных объектов в списке. Два объекта a и b считаются различными, если a is b равно False. Вашей программе доступна переменная с названием objects, которая ссылается на список, содержащий не более 100 объектов. Выведите количество различных объектов в этом списке.
Решение в 10 строк(которое сразу пришло на ум):
list = [] for obj in objects: flag = False for l in list: if obj is l: flag = True break if not flag: list.append(obj) print(len(list))
Формируем список list c уникальными элементами. Элементы берём из objects.
Второй вариант более изящный. Используем особенность питона - множества. Как известно, они могут содержать только уникальные элементы. Решение в 4 строки:m = set() for obj in objects: m.add(id(obj)) print(len(m))
03 07 2016
- Python
- Несколько примеров на Python. Модификация функции min - задаём диапазон чисел. Несколько примеров функционального программирования.
- Функции как переменные в Python. Область видимости переменной. Реализация инкапсуляции переменной в Python.
- Python. Задача о нахождении количества уникальных объектов в списке. Два подхода.
- Пример анимации в Android с использованием TimeAnimator.
- Android. Два способа записать результат Timer в пользовательский поток (UI Thread).
- Несколько примеров на Kotlin
- Несколько примеров на Python. Модификация функции min - задаём диапазон чисел. Несколько примеров функционального программирования.
- Функции как переменные в Python. Область видимости переменной. Реализация инкапсуляции переменной в Python.
- Python. Задача о нахождении количества уникальных объектов в списке. Два подхода.
- LINQ. Некоторые примеры работы с интерфейсом IEnumerable.
- С#. Пример обратного цикла с помощью лямбда-выражения с рекурсией.