亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創建范圍內缺失的指數列表

創建范圍內缺失的指數列表

呼啦一陣風 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 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號