對於兩個列表,列表比賽中的Python:獲得一個子列表的指數在一個較大的列表
a = [1, 2, 9, 3, 8, ...] (no duplicate values in a, but a is very big)
b = [1, 9, 1,...] (set(b) is a subset of set(a), 1<<len(b)<<len(a))
indices = get_indices_of_a(a, b)
如何讓get_indices_of_a
與array(a)[indices] = b
回報indices = [0, 2, 0,...]
?有沒有比使用a.index
更快的方法,這會花費太長時間?
製作b
一套是一種匹配列表和返回索引的快速方法(請參閱compare two lists in python and return indices of matched values),但它會丟失第二個1
的索引以及這種情況下的索引序列。
+1。對於大型列表來說,這是一個很好的解決方案,它將大大減少所需的時間 - 自然而然地,在小列表中,字典的創建將花費比保存更多的時間。考慮到提問者對我的回答的評論,似乎涉及到大列表,所以這是想要的答案。 –