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
的输出。
我能做些什么来解决这个问题?
答案 0 :(得分:0)
我并非100%确定您正在尝试做什么,但如果您正在尝试找到l元素开头的索引,那么&#39单向的。
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]
答案 1 :(得分:0)
这里可以使用简单的生成器方法:
>>> 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]
>>>