python - 在python中用数字修改列表
问题描述
我正在尝试修改列表。目前,有一个随机数列表,我想更改创建数字之间增加的最大数量的列表。也许我措辞不好。例如,如果 list 是[2,3,1,2,1]
,我将修改为[1,2,3,1,2]
从 1->2、2->3 和 1->2 开始增加,总共增加 3 个序列。有什么建议么?
解决方案
我会用这个递归算法来解决你的问题。我正在做的是对我的列表进行排序,将所有重复项放在最后,并重复相同的内容,不包括已排序的无重复列表。
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]
推荐阅读
- sql - SAP HANA 随机数生成器
- python - WxPython 选择字段仅在 Mac 上不可见
- python - 如何检索 Spotify 上的所有专辑对象?
- python - Nuitka TypeError 类型“生成器”的编译器错误对象没有 len()
- canvas - 在paperjs中以形状显示边界矩形
- angular - Angular 6:从后端服务器获取文件对象后下载文件
- sql - 使用 UNPIVOT 将代码从 sql 重写为 redshift
- c# - 遍历单个实体到 HTML 无序列表
- google-cloud-endpoints-v2 - 端点框架客户端库版本
- regex - matching string using regular expression