Как посчитать, сколько раз последовательность появляется в данной строке в python? - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь подсчитать, сколько раз последовательность появляется в данной строке.

def count_seqence(str, seq):
    count = 0
    if seq in str:
        count += 1
    return count
print(count_seqence("the quick brown fox jumps over the lazy dog","he"))

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

Ответы [ 4 ]

0 голосов
/ 07 октября 2018

Используйте счетчик в вашей строке, он будет возвращать количество раз, когда он нашел значение вашего параметра seq

def count_seqence (str, seq): вернуть str.count (seq)

printcount_seqence ("kjdsflsdnf

0 голосов
/ 07 октября 2018

Использовать string.count метод.Проверьте Документацию Python для этого.

Пример:

x = "wip wip I'm a sheep wip"
print(x.count("wip"))
0 голосов
/ 07 октября 2018

Хорошо, поскольку вы используете if, а не в цикле, это означает, что либо условие равно True, и, таким образом, вы увеличиваете count, либо это False, в этом случае вы не выполняететело.

Если вы хотите посчитать числа, вам понадобится какой-нибудь механизм «зацикливания».Это не обязательно должно быть явным, например, in также скрывает цикл.Но это только приводит к True или False.

Неперекрывающиеся (count_seqence('aaaa', 'aa') is 2)

Для непересекающихся отсчетов мы можем использовать str.count:

def count_seqence(text, seq):
    return text.count(seq)

в этом случае определение конкретной функции, конечно, довольно бесполезно.Обратите внимание, что выше будет учитываться только непересекающихся совпадений.Например, при подсчете 'aa' в 'aaaa' вы получите 2, а не 3.

Перекрытие (count_seqence('aaaa', 'aa') равно 3)

Для перекрытия мыпотребуется выполнить str.find и обновлять «окно поиска» до тех пор, пока мы больше не найдем совпадение, например:

def count_seqence(text, seq):
    cnt = 0
    idx = text.find(seq)
    while idx >= 0:
        cnt += 1
        idx = text.find(seq, idx+1)
    return cnt

Таким образом, у нас есть idx, в котором хранится индекс, в котором находится новое совпадениепроисходит, и каждый раз, когда idx больше или равно 0 (мы нашли совпадение), мы увеличиваем cnt и меняем idx на следующее совпадение.

0 голосов
/ 07 октября 2018

Используйте count в вашей строке, он будет возвращать количество раз, когда он нашел значение вашего параметра seq

def count_seqence(str, seq):
    return str.count(seq)

print count_seqence("kjdsflsdnf lskmfldsknffsdlkfnsldkmf", "ds")

Выход

2
...