def finding_letters(s,l):
i = 0
while i < len(s):
l = ''.join(l[i])
a = s.find(l[i])
return a
i = i + 1
调用查找字符串中的
finding_letters('abcde',['ab','cd','e'])
在列表中的项目应该给我的0,2,4
的输出,但我只得到0
输出。
我能做些什么来解决这个问题?
def finding_letters(s,l):
i = 0
while i < len(s):
l = ''.join(l[i])
a = s.find(l[i])
return a
i = i + 1
调用查找字符串中的
finding_letters('abcde',['ab','cd','e'])
在列表中的项目应该给我的0,2,4
的输出,但我只得到0
输出。
我能做些什么来解决这个问题?
我不是100%确定你正在尝试做什么,但是如果你试图找到一个l的元素开始的索引,这里有一种方法。
s = 'abcde'
l = ['ab','cd','e']
l = [i[0] for i in l if i in s] #get the first letter of an element of l, but only if that element can be found in s
output = [list(s).index(i) for i in l] #get the index of s where that element can be found
print(output)
[0, 2, 4]
虽然这段代码可能会回答这个问题,但提供关于为什么和/或代码如何回答这个问题的附加上下文会提高它的长期价值。 –
一个简单的发电机的方法可以用在这里:
>>> def find_letters(seq, l):
for el in l:
if not seq.find(el) == -1:
yield seq.find(el)
>>> find_letters('abcde',['ab','cd','e'])
<generator object find_letters at 0x04305510>
>>> list(find_letters('abcde',['ab','cd','e']))
[0, 2, 4]
>>>
或者更好的是,一个简单的生成器表达式:
>>> list(('abcde'.find(el) for el in ['ab','cd','e'] if 'abcde'.find(el) != -1))
[0, 2, 4]
>>>
请请勿使用Facebook的标签,如果它不是关于Facebook的东西。标记编程语言,例如。 – luschn
[在Python中查找多个字符串中出现的字符串]可能的重复(http://stackoverflow.com/questions/3873361/finding-multiple-occurrences-of-a-string-within-a-string-in- python) –