n,m=map(int,input().split())
arr=[i%m for i in (map(int,(input().split())))]
在这种情况下,假设n=5
和m =3
并输入array =[3, 2 ,1 ,4, 5]
arr=[0, 2, 1, 1, 2]
,但现在我想在列表中有效地存储等值的元素,即{{1}和[1,1]
。有效地将它们组合在一起的最佳方法是什么?我也希望它们的索引在最后这样
输出:[[1,1],[2,2]]来自指数(2,3)和指数(1,4)
我正在寻找的是在执行mod操作之后采用具有相同值的mod之前的原始数组元素的索引。
答案 0 :(得分:3)
set
仅保存唯一值
arr=[0, 2, 1, 1, 2]
arr = [(s, arr.count(s)) for s in set(arr)]
# [(0, 1), (1, 2), (2, 2)]
更新(感谢@JonClements)
s = {}
for i, v in enumerate(arr):
s.setdefault(v % 3, []).append(i)
print(s)
# {0: [0], 1: [2, 3], 2: [1, 4]}