Опубликован: 29.10.2023 135
В Python для подсчета количества одинаковых элементов в списке, кортеже или строке можно воспользоваться встроенной функцией count()
, которая вычисляет, сколько раз конкретное значение встречается в последовательности.
Синтаксис: sequence.count(element)
sequence
— это последовательность (список, кортеж или строка), в которой нужно произвести поиск;element
— это элемент последовательности, количество вхождений которого нужно подсчитать.Функция count(x)
принимает один аргумент: значение x
, которое вы хотите найти в списке list_a
, и возвращает количество вхождений указанного элемента.
# подсчет количества значений 3 в списке
list_a = [1, 2, 3, 1, 2, 3, 1, 1, 1, 2, 3, 3, 3, 3]
print(list_a.count(3))
6
# подсчет количества значений 1 в кортеже
tuple_a = (1, 2, 3, 1, 2, 3, 1, 1, 1, 2, 3, 3, 3, 3)
print(tuple_a.count(1))
5
Если функция count()
используется для подсчета одинаковых элементов в строке string
, она принимает в качестве аргумента подстроку substring
и возвращает количество раз, которое substring
встречается в строке.
# подсчет количества символов `o` в строке
my_string = "Hello, World!"
print(my_string.count('o'))
2
Counter()
встроенного модуля collections
.Еще более быстрым и удобным способом подсчета одинаковых элементов в последовательности является использование счетчика collections.Counter()
.
Функция collections.Counter()
принимает в качестве аргумента итерируемый объект и возвращает словарь, в котором:
key
- это отдельные элементы последовательности;value
- количество повторений каждого элемента.Причем словарь отсортирован по убыванию значений элементов.
import collections
# подсчет количества вхождений элементов в списке
list_a = [1, 2, 3, 1, 2, 3, 1, 1, 1, 2, 3, 3, 3, 3]
cnt = collections.Counter(list_a)
print(cnt)
Counter({3: 6, 1: 5, 2: 3})
# печать результатов подсчета
for key, val in cnt.items():
print(f"{key} - {val}")
1 - 5
2 - 3
3 - 6
# подсчет количества одинаковых букв в строке
my_string = "Hello World"
cnt = collections.Counter(my_string)
print(cnt)
Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, ' ': 1, 'W': 1, 'r': 1, 'd': 1})
Счетчик Counter()
имеет ряд полезных методов, в том числе метод most_common(n)
, который возвращает список из n
кортежей [(элемент, количество повторений)] самых часто повторяющихся элементов последовательности.
Если необходимо найти наименее распространенные элементы последовательности, то можно воспользоваться нарезкой с шагом -1.
import collections
list_a = [1, 2, 3, 1, 2, 3, 1, 1, 1, 2, 3, 3, 3, 3]
# вывод двух самых часто повторяющихся элементов списка
cnt = collections.Counter(list_a)
cnt.most_common(2)
[(3, 6), (1, 5)]
# вывод двух наименее распространенных элементов списка
cnt.most_common()[:-3:-1]
[(2, 3), (1, 5)]
Преимущества двухсторонней очереди collections.deque() над списком
Использование collections.namedtuple() для создания неизменяемого словаря
Преимущества использования словаря collections.defaultdict()
Методы преобразования списка в строку и обратно
Комментариев нет.