Dado un rango de lista ordenada de enteros con algunos enteros faltantes en el medio, escriba un programa Python para encontrar todos los enteros faltantes.
Ejemplos:
Input : [1, 2, 4, 6, 7, 9, 10] Output : [3, 5, 8] Input : [5, 6, 10, 11, 13] Output : [7, 8, 9, 12]
Método #1: Comprensión de listas
# 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]
Método #2: Comprensión de listas usando 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]
Método #3: Usando el conjunto
El uso del conjunto de Python es una forma eficiente y complicada de encontrar los números que faltan en la lista. Convertimos la lista a conjunto y simplemente mostramos la diferencia entre este conjunto y un conjunto que contiene números enteros que van desde min(lst) y 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]
Método #4: Usando la diferencia()
Este es un enfoque similar al anterior con la ligera diferencia de que en lugar de usar el operador ‘-‘ para encontrar la diferencia entre ambos conjuntos, podemos usar el método de diferencia() de Python.
# 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]
Publicación traducida automáticamente
Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA