2016-11-07 15 views
-1

もしあなたがその一部しか持っていなければ、リスト内のある要素のインデックスをどう見つけるのだろうと思いました。たとえば、インデックス付きのPythonリストの検索

list = ["this", "is", "an", "example", "for", "python"] 

"pyt"があり、インデックスが必要な場合はどうすれば見つけますか? forループ

+3

どのようにマッチを決定するかによって異なります。例えば、is is is is "is"と "this"の両方にマッチするか? – user2699

+0

@ user2699が述べたように、どのような結果が期待されますか?最初に一致した要素のインデックスまたはすべての一致によるインデックスのリストのみですか? – RomanPerekhrest

答えて

1

わかりやすい:

def find_starts(val, my_list): 
    for i, v in my_list: 
     if v.startswith(val): 
      return i 

(一致しない場合、これはNoneを返します。)これは、リスト内包ですっきり行うことができます。詳細についてはthis related questionを参照してください。

1

質問は100%明確ではないので、私はあなたが指定された文字列を含むすべての項目を検索すると仮定します。

alist = ["this", "is", "an", "example", "for", "python"] 

val = 'is' 

def find_in_list(alist, val): 
    res = [] 
    for e, v in enumerate(alist): 
     if val in v: 
      res.append(e) 
    return res 

find_in_list(alist, val) 
+0

しかし、助けてくれてありがとう、私はこれを考えていた。 ["Bob smith"、 "Garry Taylor"]もし私がちょうどそれを与えたら、私はインデックスを見つけるだろうか??? Thob –

+0

alist = ["Bob smith"、 "Garry Taylor"] val = 'Bob' – Richy

+0

こんにちは@リッチこれは動きません。 –

0

あなたは、いくつかの要素が類似しているときに機能液で仕事をしなければならない(例えば、["foo", "asd", "foobar"]について、あなたは正しい要素として検出されるもの"foo"がありますか?)

が与えられた関数がリストを返します。正しい要素として識別された索引の数。

def find(foo, list): 
    #Find similar elements 
    similarElements = [e for e in list if foo in e] 
    #Find their indexes 
    indexes = [similarElements.index(i) for i in similarElements] 
    return indexes 

この解決策は最も速い方法ではなく、わかりやすく簡単です。

0
>>> list = ["this", "is", "an", "example", "for", "python"] 
>>> word = "python" 
>>> y = [i for i,j in enumerate(list) if j == word] 
>>> y 
[5] 

ただし、これは単語全体でも同様です。

>>> word = "py" 
>>> for w in list: 
...  if word in w: 
...    sus.append(w) 
...    print(sus) 
... 
['python'] 
関連する問題