你好,我有一个包含很多元素的列表。这些是数字,有序,但是缺少一些数字。
示例:L =[1,2,3,4,6,7,10]
遗失:M = [5,8,9]
如何找到Python中缺少的数字?
答案 0 :(得分:6)
取套之间的差异:
set(range(min(L),max(L))) - set(L)
如果您确实时间紧缺,并且L
确实经过排序,那么
set(range(L[0], L[-1])) - set(L)
答案 1 :(得分:3)
此功能可以解决问题
def missing_elements(L):
s, e = L[0], L[-1]
return sorted(set(range(s, e + 1)).difference(L))
miss = missing_elements(L)
答案 2 :(得分:2)
您在这里:
L =[1,2,3,4,6,7,10]
M = [i for i in range(1, max(L)) if i not in L]
# If 0 shall be included replace range(1, max(L)) to range(max(L))
答案 3 :(得分:2)
理解后,它看起来像这样:
L = [1,2,3,4,6,7,10]
M = [i for i in range(min(L), max(L)+1) if i not in L]
M
#[5,8,9]
一个有趣的东西,只是添加到一堆中:
[i for a, b in zip(L, L[1:]) for i in range(a + 1, b) if b - a > 1]
答案 4 :(得分:0)
L =[1,2,3,4,6,7,10]
R = range(1, max(L) + 1)
> [1,2,3,4,5,6,7,8,9,10]
M = list(set(R) - set(L))
> [5,8,9]
请注意,M不一定要排序,但可以轻松排序。