Count: примеры (PYTHON)
count(value): intОписание функции count в Python
Метод count() доступен для строк, списков, кортежей и байтовых последовательностей. Он выполняет подсчет вхождений указанного элемента или подстроки.
Для строк используется синтаксис: str.count(sub[, start[, end]]). Параметр sub - подстрока для поиска. Аргументы start и end определяют диапазон поиска, аналогично срезам. Метод возвращает целое число вхождений.
Для списков и кортежей синтаксис проще: list.count(x) или tuple.count(x), где x - искомый элемент. Поиск выполняется по полному совпадению.
Функция не поддерживает регулярные выражения и выполняет чувствительный к регистру поиск для строк. При отсутствии вхождений возвращает 0.
Основные примеры использования
Подсчет в строках
text = "программирование на Python и программирование на Java"
print(text.count("программирование"))
print(text.count("Python"))
print(text.count("и", 20, 40))2 1 1
Подсчет в списках
numbers = [1, 2, 3, 1, 2, 1, 4, 5]
print(numbers.count(1))
print(numbers.count(10))3 0
Подсчет в кортежах
values = (True, False, True, True, None)
print(values.count(True))
print(values.count(None))3 1
Похожие возможности в Python
collections.Counter - специализированный словарь для подсчета хешируемых объектов. Подходит для массового подсчета частоты элементов.
from collections import Counter
data = ['a', 'b', 'a', 'c', 'b', 'a']
counter = Counter(data)
print(counter['a'])3
str.find() и str.index() - методы поиска подстрок с возвратом позиции. Полезны, когда нужна позиция вхождения, а не количество.
re.findall() - функция модуля регулярных выражений. Используется для сложных шаблонов поиска с поддержкой регулярных выражений.
Аналоги функции в других языках
JavaScript
// Для строк
let text = "hello world";
let count = (text.match(/l/g) || []).length;
console.log(count);
// Для массивов
let arr = [1, 2, 1, 3, 1];
let arrCount = arr.filter(x => x === 1).length;
console.log(arrCount);3 3
Java
// Для строк
String str = "Java programming";
long count = str.chars().filter(ch -> ch == 'a').count();
System.out.println(count);
// Для коллекций
List list = Arrays.asList(1, 2, 1, 3);
int freq = Collections.frequency(list, 1);
System.out.println(freq); 3 2
SQL
SELECT COUNT(*) FROM table WHERE column = 'value';PHP
// Для строк
$count = substr_count("hello world", "l");
echo $count;
// Для массивов
$array = [1, 2, 1, 3];
$count_values = array_count_values($array);
echo $count_values[1];3 2
Распространенные ошибки
Смешение типов данных
# Неправильно: поиск числа в строке без преобразования
values = [1, 2, 3, '1', '2']
print(values.count('1'))
print(values.count(1))1 1
Число 1 и строка '1' считаются разными значениями.
Регистрозависимость строк
text = "Python PYTHON python"
print(text.count("python"))1
Неправильные границы поиска
text = "abcdefgh"
print(text.count("cde", 5, 7)) # Диапазон не содержит искомую подстроку0
Изменения в последних версиях Python
В Python 3.10 были оптимизированы внутренние механизмы работы метода count() для строк, что улучшило производительность на 10-15% для некоторых случаев.
Для байтовых массивов (bytearray) метод count() был полностью стабилизирован и теперь работает аналогично строковому методу.
Расширенные примеры применения
Подсчет пересекающихся подстрок
# count() не считает пересекающиеся вхождения
text = "aaaa"
print(text.count("aa"))
# Альтернативный способ с пересечениями
import re
print(len(re.findall(r'(?=aa)', text)))2 3
Подсчет в многомерных структурах
matrix = [[1, 2], [1, 3], [1, 4]]
total = sum(row.count(1) for row in matrix)
print(total)3
Анализ текстовых данных
def analyze_text(text, keywords):
return {word: text.lower().count(word) for word in keywords}
result = analyze_text("Python и Java, Python или JavaScript",
["python", "java", "javascript"])
print(result){'python': 2, 'java': 1, 'javascript': 1}Работа с байтовыми последовательностями
data = b'\x00\x01\x00\x02\x00\x00'
print(data.count(b'\x00'))
print(data.count(b'\x00', 2, 5))4 2