Итак, дана строка. Задача состоит в том, чтобы посчитать частоту вхождения одного символа в эту строку. Эта конкретная операция со строкой весьма полезна во многих приложениях и используется например как способ для удаления дубликатов или обнаружения нежелательных символов. Рассмотрим 5 методов.
Друзья, подписывайтесь на наш телеграм канал Pythonist. Там еще больше туториалов, задач и книг по Python.
Метод №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

