2012-12-23 114 views
6
L=[0,8,5,6,4,5,6,14,8] 

我希望能夠返回[4,5,6]的索引(在本例中返回4)。如何返回Python中列表中存在的多個元素的索引?

+4

爲什麼人們投票關閉?這是一個完全合法的問題。 – MyNameIsKhan

+0

我認爲這並不是一個真正的問題,來自那些相信你沒有提供你的例子代碼來進行比較的人。進一步從你回答某人的答案清楚地表明你的問題,而這顯示很少或沒有努力。 – Woot4Moo

+0

重複:http://stackoverflow.com/questions/7627548/find-sub-list-inside-a-list-in-python – Chronial

回答

1

用這個代替:

' '.join(map(str,L)).index(' '.join(map(str,x)))/2 

編輯:感謝isbadawi用於注意到了愚蠢的錯誤,並solilo用於指明瞭巨大的錯誤,哈哈

+0

似乎有所有建議的解決方案中運行速度最快,它是一個單線程 – MyNameIsKhan

+1

'lambda c:str(c)'可以寫成'str' –

+0

哦,是的,你是對的,但是 – jackcogdill

2

這裏有一種方法來實現它:

def find_in_list(l, x): 
    for i in range(len(l) - len(x) + 1): 
     if l[i:i+len(x)] == x: 
      return i 
+0

這就是我目前正在做的;有沒有一個內置的Python函數可以使它成爲簡短的單行程? – MyNameIsKhan

1
In [193]: min(i for i in range(len(L)) if L[i:i+len(key)] == key) 
Out[193]: 4 

In [194]: L=[0,8,5,6,4,5,6,14,8] 

In [195]: key=[4,5,6] 

In [196]: min(i for i in range(len(L)) if L[i:i+len(key)] == key) 
Out[196]: 4 
相關問題