Для подсчета количества уникальных элементов в списке Python существует несколько эффективных методов. Вот наиболее распространенные способы:
Использование функции set()
Это самый простой и часто используемый метод:
my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
unique_count = len(set(my_list))
print(f"Количество уникальных элементов: {unique_count}")
Функция set() создает множество из списка, автоматически удаляя дубликаты. Затем мы используем len() для подсчета элементов в этом множестве.
Использование Counter из модуля collections
Этот метод эффективен, особенно если вам нужно также знать частоту каждого элемента:
from collections import Counter
my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
counter = Counter(my_list)
unique_count = len(counter)
print(f"Количество уникальных элементов: {unique_count}")
Counter создает словарь, где ключи — это уникальные элементы, а значения — их количество в списке
Использование list comprehension и set()
Этот метод может быть полезен, если вам нужно выполнить дополнительную фильтрацию:
my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
unique_count = len({x for x in my_list})
print(f"Количество уникальных элементов: {unique_count}")
Использование numpy.unique() для числовых списков
Если вы работаете с числовыми данными и уже используете NumPy:
import numpy as np
my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
unique_count = len(np.unique(my_list))
print(f"Количество уникальных элементов: {unique_count}")
Выбор метода зависит от конкретной задачи, размера данных и требований к производительности. Метод с использованием set() обычно является наиболее простым и эффективным для большинства случаев.
Важно отметить, что все эти методы работают с любыми хешируемыми объектами в Python, не только с числами. Однако, если в вашем списке есть нехешируемые объекты (например, списки или словари), вам может потребоваться дополнительная обработка