2016-11-09 4 views
-1
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

そうでない場合はFacebookのタグを使用ドントください。 Facebookのものについて。たとえば、プログラミング言語にタグを付けます。 – luschn

+0

[Pythonで文字列内の複数の文字列を検索する]の可能な複製(http://stackoverflow.com/questions/3873361/finding-multiple-occurrences-of-a-string-within-a-string-in- Python) –

答えて

0

あなたがしようとしていることを100%確信していませんが、lの要素が始まるsのインデックスを見つけようとしている場合、ここでは1つの方法があります。シンプルな発電機のアプローチは、ここで使用することができます

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] 
>>> 
関連する問題