我想創建一個新串列,通過添加前一個元素(第一項)的連續值和整個串列的第二項中的零來獲取我現有的串列 L。
輸入:
L = [(1, 12), (3, 14), (6, 19), ..., (7412, 15), (7415, 15)]
我想要這個輸出:
L = [(1, 12), (2, 0) ,(3, 14), (4, 0), (5, 0), (6, 19), ... , (7412, 15), (7413, 0), (7414, 0), (7415, 15)]
uj5u.com熱心網友回復:
這應該可以完成作業。不過,不是最易讀的。
L = [(1, 12), (3, 14), (6, 19)]
keys = {key[0]:idx for (idx, key) in enumerate(L)}
[(x, L[keys[x]][1]) if x in keys.keys() else (x, 0) for x in range(1, L[-1][0] 1)]
輸出:
[(1, 12), (2, 0), (3, 14), (4, 0), (5, 0), (6, 19)]
可以使用簡單的 for 回圈代替串列理解,使其更具可讀性,但也會占用更多代碼行。
uj5u.com熱心網友回復:
你可以
(i) 用于set.difference查找不包含任何元組的數字,L并為每個元組創建一個元組并將所有數字放入串列中,
(ii) 將其添加到原始L串列中,并在第一個元素上對新串列進行排序。
L = [(1, 12), (3, 14), (6, 19)]
z = list(zip(*L))[0]
out = [(i,0) for i in set(range(z[0],z[-1] 1)).difference(z)]
out = sorted(L out)
輸出:
[(1, 12), (2, 0), (3, 14), (4, 0), (5, 0), (6, 19)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375882.html
