计算 Python 中的子串 - 更有效的方法?
Counting substrings in Python - more efficient approach?
所以我已经学习 Python 几个月了。我遇到了一个练习,希望你计算一个子字符串在一个字符串中出现了多少次。我进行了搜索,但找不到我正在寻找的确切答案。这是我写的代码,它是功能性的。但是,由于异常,它确实需要一秒钟。我选择使用 string.index 因为 string.find 中的 -1 值在某些情况下会弄乱起点。在不导入其他模块等的情况下,更有效的方法是什么。例如更基础的Python,比如我写的代码
word = "banana"
sub = "ba"
start = 0
ix = 0
count = 0
end = None
if end is None:
end = len(word)
while start < end:
if sub in word:
try:
ix = word.index(sub, start, end)
except:
break
ix += 1
start = ix + 1
count += 1
print(count)
谢谢!
你可以这样做:
'banana'.count('ba')
字符串计数方法的文档说:
Return the number of non-overlapping occurrences of substring sub in
string S[start:end]. Optional arguments start and end are
interpreted as in slice notation.
示例输出:
>>> 'banana'.count('ba')
1
>>> 'banana'.count('na')
2
所以我已经学习 Python 几个月了。我遇到了一个练习,希望你计算一个子字符串在一个字符串中出现了多少次。我进行了搜索,但找不到我正在寻找的确切答案。这是我写的代码,它是功能性的。但是,由于异常,它确实需要一秒钟。我选择使用 string.index 因为 string.find 中的 -1 值在某些情况下会弄乱起点。在不导入其他模块等的情况下,更有效的方法是什么。例如更基础的Python,比如我写的代码
word = "banana"
sub = "ba"
start = 0
ix = 0
count = 0
end = None
if end is None:
end = len(word)
while start < end:
if sub in word:
try:
ix = word.index(sub, start, end)
except:
break
ix += 1
start = ix + 1
count += 1
print(count)
谢谢!
你可以这样做:
'banana'.count('ba')
字符串计数方法的文档说:
Return the number of non-overlapping occurrences of substring sub in string S[start:end]. Optional arguments start and end are interpreted as in slice notation.
示例输出:
>>> 'banana'.count('ba')
1
>>> 'banana'.count('na')
2