給定一個長度爲N
的數組a
,這是一個整數列表,我想提取重複值,其中每個包含重複位置的值都有一個單獨的列表。在僞數學:從數組中提取重複值和位置的提取列表
If |M| > 1:
val -> M = { i | a[i] == val }
例(N=11
):
a = [0, 3, 1, 6, 8, 1, 3, 3, 2, 10, 10]
應給予以下列表:
3 -> [1, 6, 7]
1 -> [2, 5]
10 -> [9, 10]
我加入了python
標記,因爲我目前在編程語言(numpy和scipy都可用),但我更關心如何去做的一般算法。不過,代碼示例很好。
一個想法,我還沒有充實:構建一個元組列表,將a
的每個條目與它的索引(i, a[i])
配對。將第二個條目作爲關鍵字對列表進行排序,然後檢查第二個條目相同的連續條目。
可能重複:http://stackoverflow.com/questions/9835762/find-and-list-duplicates-in-python-list –
@SlaterTyranus:不。再次閱讀問題,我需要重複列表_及其位置_。 – Markus
這就像是從這個問題12個字符的變化。足夠接近,你應該能夠從那裏弄清楚。 –