为了账号安全,请及时绑定邮箱和手机立即绑定

创建范围内缺失的指数列表

创建范围内缺失的指数列表

呼啦一阵风 2022-06-07 19:10:53
我有一个长的、有序的索引列表,范围从零到大约 430 万,范围内缺少一些索引,即mylist = [0, 1, 5, 7, 8, 9, 12 ... 4301981, 4301983]我正在寻找一种快速的方法来获取这个数字中不存在的数字的有序列表,直到最大值,即newlist = [2, 3, 4, 6, 10, 11 ... 4301982]我尝试了以下方法:newlist = []for i in range(max(mylist)):    if i not in mylist:        newlist.append(i)但是考虑到我的列表的大小,这太慢了。对于像我这样的大量索引,有没有一种快速的方法来做到这一点?
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

您可以在列表中创建一个set从 arange到最大值的值,并set.difference使用列表:


mylist = [0, 1, 5, 7, 8, 9, 12]


list(set(range(max(mylist))).difference(mylist))

# [2, 3, 4, 6, 10, 11]


查看完整回答
反对 回复 2022-06-07
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

def missing_indices(mylist):

    missing_list=[]

    for i in range(0,len(mylist)-1):

        if mylist[i:i+1]!=list(range(mylist[i],mylist[i+1])):

           missing_list.append(list(range(mylist[i]+1,mylist[i+1])))

    print(missing_list)

mylist=[0, 1, 5, 7, 8, 9, 12]

missing_indices(mylist)


[[2, 3, 4], [6], [10, 11]]


查看完整回答
反对 回复 2022-06-07
  • 2 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号