2016-11-07 125 views
-1

我想知道如果你只有一部分,你会如何找到列表中元素的索引。例如Python索引索引寻找

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

如果你只有"pyt"并且需要python索引,你会如何找到它?

+3

这取决于你想如何决定一场比赛。例如,“匹配”是“或”这个“还是两者? – user2699

+0

as @ 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

感谢您的帮助,但我在想这个。 [“鲍勃史密斯”,“加里泰勒”]如果我只是给它鲍勃,我将如何找到索引? Thx –

+0

alist = [“鲍勃史密斯”,“加里泰勒”] val ='鲍勃' – Richy

+0

亲爱的@Richy这不工作,因为鲍勃是不是整个元素任何方式来解决它? –

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']