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)
您可以使用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)