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]