如何在 Python 中按特定数字自动增加重复值?

Par*_*dia 2 python algorithm math python-2.7 python-3.x

我希望对列表进行排序,然后重复项将以 0.1 的增量间隔。为什么我下面的代码不起作用?这是我期望得到的与我的程序返回的相比:

预期输出[11, 15, 15.1, 20, 20.1, 20.2, 20.3, 20.4, 30, 30.1, 40, 40.1, 50, 50.1]

实际输出[11, 15, 15.1, 20, 20.1, 20.1, 20.1, 20.1, 30, 30.1, 40, 40.1, 50, 50.1]

蟒蛇代码:

my_list = [20,20,20,30,20,30,40,50,15,11,20,40,50,15]
my_list.sort()
dup_list = []


for i in range (len(my_list)):
    if my_list[i] not in dup_list:
        dup_list.append(my_list[i])
    else:
        my_list[i] = my_list[i] + 0.10

    dup_list.append(my_list[i])
Run Code Online (Sandbox Code Playgroud)

Dan*_*ejo 5

您可以使用itertools.groupby对相等的连续元素进行分组:

from itertools import groupby

my_list = [20,20,20,30,20,30,40,50,15,11,20,40,50,15]
my_list.sort()
result = [g + i * 0.1 for k, group in groupby(my_list) for i, g in enumerate(group)]
print(result)
Run Code Online (Sandbox Code Playgroud)

输出

[11.0, 15.0, 15.1, 20.0, 20.1, 20.2, 20.3, 20.4, 30.0, 30.1, 40.0, 40.1, 50.0, 50.1]
Run Code Online (Sandbox Code Playgroud)