在列表中查找缺失的元素

时间:2018-08-17 14:55:52

标签: python list

你好,我有一个包含很多元素的列表。这些是数字,有序,但是缺少一些数字。

示例:L =[1,2,3,4,6,7,10]

遗失:M = [5,8,9]

如何找到Python中缺少的数字?

5 个答案:

答案 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不一定要排序,但可以轻松排序。