我有这个程序,我想把它作为参数列出,然后将这些数字添加到新列表中一次。对于参数中给出的每个重复数字,我希望它为索引添加+1,它是一个重复的值,其值从0开始。 这就是我目前所拥有的:
def mut_sum(mutind):
summed_mut=[]
for i in mutind:
if i not in summed_mut:
summed_mut.append(i)
else:
所以如果我把参数作为mutind等于[0,0,1,2,2,3,3,3]
在运行for循环后,summed_mut应该等于[0,1,2,3]
我希望最终的summed_mut等于[1,0,1,2]
谢谢!
答案 0 :(得分:1)
使用itertools.groupby
像这样工作:
from itertools import groupby
mutind = [0,0,1,2,2,3,3,3]
vals = [(x, len(list(y))) for x, y in groupby(mutind)]
# vals now contains the values of the unique items and the count of each items
[x for x, _ in vals]
# [0, 1, 2, 3]
[y - 1 for _, y in vals]
# [1, 0, 1, 2]