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