我正在尝试修改列表。当前,有一个带有随机数的列表,我想更改列表以在数字之间增加最大数量。也许我措辞不好。例如,如果list是[2,3,1,2,1]
,由于1-> 2、2-> 3和1-> 2的增加,我将其修改为[1,2,3,1,2]
,这将使总数为3。有什么建议吗?
答案 0 :(得分:1)
我将使用此递归算法解决您的问题。我正在做的是对列表进行排序,将所有重复项放在末尾,并重复除已排序且无重复的列表之外的所有重复项。
def sortAndAppendDuplicates(l):
l.sort()
ll = list(dict.fromkeys(l)) # this is 'l' without duplicates
i = 0
while i < (len(ll)-1):
if list[i] == list[i+1]:
a = list.pop(i)
list.append(a)
i = i - 1
i = i + 1
if hasNoDuplicates(l):
return l
return ll + sortAndAppendDuplicates(l[len(ll):])
def hasNoDuplicates(l):
return( len(l) == len( list(dict.fromkeys(l)) ) )
print(sortAndAppendDuplicates([2,3,6,3,4,5,5,8,7,3,2,1,3,4,5,6,7,7,0,1,2,3,4,4,5,5,6,5,4,3,3,5,1,2,1]))
# this would print [0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 3, 4, 5, 3, 5, 3, 5]