在字符串中查找列表中的项目

时间:2016-11-09 16:50:58

标签: python

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的输出。

我能做些什么来解决这个问题?

2 个答案:

答案 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]
>>> 
相关问题