假如要实现一种字符串查找的方法findAll(source_str,dest_str):
从源字符串source_str中查找所有目标字符串dest_str出现的位置,并返回由这些位置(下标)构成的列表
例如:从字符串’abcXXabcXXabc’中查找所有的’abc’出现的位置,结果是[0,5,10]
要求:使用两种方法实现findAll方法
# 法一
str1 = "abcXXabcXXabc"
result = []
for i,v in enumerate(str1):
if str1[i:i+3] == 'abc':
result.append(i)
# 法二
[i for i,v in enumerate(str1) if str1[i:i+3] == 'abc']
>>> def findAll_1(source_str, dest_str):
i, result = 0, list()
while True:
k = source_str[i:].find(dest_str)
if k < 0:
break
result.append(i+k)
i += k+len(dest_str)
return result
>>> def findAll_2(source_str, dest_str):
s, d = len(source_str), len(dest_str)
return [i for i in range(s-d+1) if source_str[i:i+d]==dest_str]
>>> findAll_1('abcXXabcXXabc', 'abc')
[0, 5, 10]
>>> findAll_2('abcXXabcXXabc', 'abc')
[0, 5, 10]