📌  相关文章
📜  Python|在排序列表范围内查找缺失的数字

📅  最后修改于: 2022-05-13 01:55:04.219000             🧑  作者: Mango

Python|在排序列表范围内查找缺失的数字

给定一系列排序的整数列表,其中一些整数缺失,编写一个Python程序来查找所有缺失的整数。

例子:

Input : [1, 2, 4, 6, 7, 9, 10]
Output : [3, 5, 8]

Input : [5, 6, 10, 11, 13]
Output : [7, 8, 9, 12]


方法#1:列表理解

# Python3 program to Find missing 
# integers in list
          
def find_missing(lst):
    return [x for x in range(lst[0], lst[-1]+1) 
                               if x not in lst]
  
# Driver code
lst = [1, 2, 4, 6, 7, 9, 10]
print(find_missing(lst))
输出:
[3, 5, 8]


方法 #2:使用zip()进行列表理解

# Python3 program to Find missing 
# integers in list
          
def find_missing(lst):
    return [i for x, y in zip(lst, lst[1:]) 
        for i in range(x + 1, y) if y - x > 1]
  
# Driver code
lst = [1, 2, 4, 6, 7, 9, 10]
print(find_missing(lst))
输出:
[3, 5, 8]


方法#3:使用集合

使用Python集合是一种在列表中查找缺失数字的有效且棘手的方法。我们将列表转换为集合并简单地输出该集合与包含从min(lst)max(lst)范围内的整数的集合之间的差异。

# Python3 program to Find missing 
# integers in list
          
def find_missing(lst):
    return sorted(set(range(lst[0], lst[-1])) - set(lst))
  
# Driver code
lst = [1, 2, 4, 6, 7, 9, 10]
print(find_missing(lst))
输出:
[3, 5, 8]


方法#4:使用差异()

这是一种与前一种方法类似的方法,略有不同的是,我们可以使用Python的differ ()方法,而不是使用'-'运算符来查找两个集合之间的差异。

# Python3 program to Find missing 
# integers in list
          
def find_missing(lst):
    start = lst[0]
    end = lst[-1]
    return sorted(set(range(start, end + 1)).difference(lst))
  
# Driver code
lst = [1, 2, 4, 6, 7, 9, 10]
print(find_missing(lst))
输出:
[3, 5, 8]