2017-06-16 90 views
-1

列表的所有索引我有2所列出查找包含值的Python

lst = [1,2,3,4,5,1,2,1,2,3] 
lst2 = [1,2,3] 

我想看到指數元素lstlst2。目前我在做;

ind = [] 
for x in lst2: 
    if x in lst: 
     ind.append(lst.index(x)) 

我意識到問題是,lst.index(x)只返回元素第一次出現這樣x=1總是返回lst.index(1) = 0

有沒有辦法返回所有包含該元素的索引?

+0

這些操作看起來像是想用集合來實現。尋找索引的實際目的是什麼? –

+0

我已經預測了數據和觀察到的數據,存儲在DataFrame中。我需要這些索引來查找兩個索引中日期相同的情況,以便比較幾個不同的字段。 – Ahmed

回答

5

您可以使用這樣的

ind = [[i for i, value in enumerate(lst) if value == x] for x in lst2] 

我不知道這個操作的目的,但它可能是使用字典更有用理解:

ind = {x: [i for i, value in enumerate(lst) if value == x] for x in lst2} 

因爲在這種情況下,你將有這樣的輸出:{1: [0, 5, 7], 2: [1, 6, 8], 3: [2, 9]},這可能更易於使用。

1

這確實你問什麼:

ind = [i for i, x in enumerate(lst) for y in lst2 if x == y] 
+0

這些文檔說的是什麼?搜索「Python方法枚舉」。 – Prune