[問題]搜尋缺值 往前補齊
各位好
問題:有一list中存有1~35的數 但其中有些值遺失(比如:7 17 18)
長得像下面這樣:
a = [10, 11, 13, 12, 16, 29, 15, 14, 28, 9, 8, 6, 5, 4,
1, 3, 2, 31, 25, 19, 24, 30, 26, 32, 33, 27, 23, 22, 34, 20, 21, 35]
如何找到缺失值,並往前遞補,(比如7不見8之後全部的數 往前遞補)
目前程式寫到這 就卡住了
b=[] #b用來存遺失的數
for i in range(len(a)): #i表示所有的數 1~35
for j in range(len(a)): #j表示list中的位置
if(i+1) == a[j]:
break
b += [i+1]
我覺得我再寫下去 可能要用第三個for迴圈...........
各位對這種往前補足數字的問題
有沒有更簡單的作法?
當天腦袋一片渾沌 思路不清
晚上回家後寫出我土法煉鋼版本 跟大家分享:
_____________________________________________________________
(防雷頁)
---------------------------------------------------
#找遺失值
notExist = [] #notExist用來儲存遺失值
exist = [] #Exist用來儲存存在值
for i in range(1,36): #i表示數 1~35
for j in range(len(a)): #j表示list中的位置
if (i != a[j]) & (j == len(a)-1): #若數到list最後一個 都沒對中 則此
notExist += [i] #數存入notExist
elif (i != a[j]) & (j != len(a)-1): #若沒對中 但還未到list最後 則繼續對
continue
elif i == a[j]: #若對中 存起來 對下一個i值
exist += [i]
break
#往前遞補
newList = []
for val in a:
newVal = val
for notE in notExist:
if val > notE: #若a中的數比notExist中的大 則減1 往前補齊
newVal = newVal - 1
newList += [newVal]
-------------------------------------------------
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.167.38.139
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1539067177.A.E70.html
※ 編輯: Angesi (1.167.38.139), 10/09/2018 14:51:28
→
10/09 15:12,
6年前
, 1F
10/09 15:12, 1F
是的 排完後會小於35 因為有3個數遺失
推
10/09 15:16,
6年前
, 2F
10/09 15:16, 2F
真的是很精簡的code 感謝回覆
比我用多層for迴圈寫 好多了
※ 編輯: Angesi (1.167.38.139), 10/09/2018 15:26:37
推
10/09 22:24,
6年前
, 3F
10/09 22:24, 3F
推
10/10 08:06,
6年前
, 4F
10/10 08:06, 4F

→
10/10 08:06,
6年前
, 5F
10/10 08:06, 5F
非常好 但好像只能處理一個遺失值 ; 若4 5連續兩個遺失 if判斷可能會有問題
推
10/10 15:25,
6年前
, 6F
10/10 15:25, 6F
※ 編輯: Angesi (1.167.38.77), 10/11/2018 10:09:15
推
10/11 15:33,
6年前
, 7F
10/11 15:33, 7F
→
10/12 08:55,
6年前
, 8F
10/12 08:55, 8F
→
10/12 08:55,
6年前
, 9F
10/12 08:55, 9F
→
10/12 08:55,
6年前
, 10F
10/12 08:55, 10F
我也想簡化問題...
→
10/12 19:09,
6年前
, 11F
10/12 19:09, 11F
→
10/12 19:09,
6年前
, 12F
10/12 19:09, 12F
→
10/12 19:09,
6年前
, 13F
10/12 19:09, 13F
→
10/12 19:09,
6年前
, 14F
10/12 19:09, 14F
→
10/12 19:10,
6年前
, 15F
10/12 19:10, 15F
原來能這樣解 被樓下實作出來了
→
10/12 21:46,
6年前
, 16F
10/12 21:46, 16F
→
10/12 21:46,
6年前
, 17F
10/12 21:46, 17F
→
10/12 22:22,
6年前
, 18F
10/12 22:22, 18F
解得真漂亮 用字典做為對映的工具 一一掃瞄回來
非常重要的想法!!!
※ 編輯: Angesi (1.167.38.106), 10/13/2018 10:08:45
Python 近期熱門文章
PTT數位生活區 即時熱門文章
6
25