Python. Считаем количество вхождений символа в строку

Итак, дана строка. Задача состоит в том, чтобы посчитать частоту вхождения одного символа в эту строку. Эта конкретная операция со строкой весьма полезна во многих приложениях и используется например как способ для удаления дубликатов или обнаружения нежелательных символов. Рассмотрим 5 методов.

Метод №1. Наивный

Итерируем всю строку для поиска этого конкретного символа, а затем увеличиваем счетчик, когда мы сталкиваемся с этим символом.

# Python3 code to demonstrate 
# occurrence frequency using 
# naive method 

# initializing string 
test_str = "Pythonist"

# using naive method to get count 
# counting t 
count = 0

for i in test_str: 
	if i == 't': 
		count = count + 1

# printing result 
print ("Count of t in Pythonist is : "
							+ str(count)) 
Count of t in Pythonist is : 2

Метод №2. Используем count()

Использование count() — самый обычный метод в Python, для того чтобы получить вхождения любого элемента в любом контейнере. Его легко написать и запомнить и, следовательно, его использование довольно популярно.

# Python3 code to demonstrate  
# occurrence frequency using  
# count() 
  
# initializing string  
test_str = "Pythonist"
  
# using count() to get count  
# counting t
counter = test_str.count('t') 
  
# printing result  
print ("Count of t in Pythonist is : "
                           +  str(counter)) 
 Count of e in Pythonist is : 2 

Метод №3: Используем collection.Counter ()

Это менее известный метод для получения количества вхождений элемента в любой контейнер в Python. Он также выполняет задачу, аналогичную описанным выше двум методам, просто является функцией другой библиотеки, т.е. collections.

# Python3 code to demonstrate  
# occurrence frequency using  
# collections.Counter() 
from collections import Counter 
  
# initializing string  
test_str = "Pythonist"
  
# using collections.Counter() to get count  
# counting t  
count = Counter(test_str) 
  
# printing result  
print ("Count of t in Pythonist is : "
                       +  str(count['t']))
  Count of t in Pythonist is : 2 

Способ №4: Используем lambda, sum() и map()

Лямбда-функции вместе с sum() и map() также могут решить конкретно эту задачу подсчета общего числа вхождений определенного элемента в строку. Этот метод использует sum() для суммирования всех вхождений, полученных с помощью map().

# Python3 code to demonstrate  
# occurrence frequency using  
# lambda + sum() + map() 
  
# initializing string  
test_str = "Pythonist"
  
# using lambda + sum() + map() to get count  
# counting t  
count = sum(map(lambda x : 1 if 't' in x else 0, test_str)) 
  
# printing result  
print ("Count of t in Pythonist is : "
                            +  str(count)) 
Count of t in Pythonist is : 2

Способ №5: Используем re + findall()

Регулярные выражения могут помочь нам решить множество задач программирования, связанных со строками. Они также могут помочь нам в достижении результата в задаче поиска вхождения элемента в строку.

# Python3 code to demonstrate  
# occurrence frequency using  
# re + findall() 
import re 
  
# initializing string  
test_str = "Pythonist"
  
# using re + findall() to get count  
# counting t  
count = len(re.findall("t", test_str)) 
  
# printing result  
print ("Count of t in Pythonist is : "
                            +  str(count)) 
 Count of t in Pythonist is : 2