Programa de Python para convertir una lista de múltiples enteros en un solo entero

Dada una lista de enteros, escriba un programa en Python para convertir la lista dada en un solo entero.

Ejemplos:

Input : [1, 2, 3]
Output : 123

Input : [55, 32, 890]
Output : 5532890

Existen múltiples enfoques posibles para convertir la lista dada en un solo número entero. Vamos a ver cada uno por uno.

Enfoque n.° 1: método ingenuo
Simplemente itere cada elemento de la lista e imprímalos sin espacios entre ellos.

# Python3 program to convert a list
# of integers into a single integer
  
# creating a list
lst = [12, 15, 17]
  
# iterating each element
for i in lst:
    print(i, end="")

Producción:

121517

 
Enfoque #2: Usarjoin()

Usa el join()método de Python. Primero convierta la lista de enteros en una lista de strings (como join()funciona solo con strings). Luego, simplemente únete a ellos usando el join()método. Se necesita una complejidad de tiempo de O(n).

# Python3 program to convert a list
# of integers into a single integer
def convert(list):
      
    # Converting integer list to string list
    s = [str(i) for i in list]
      
    # Join list items using join()
    res = int("".join(s))
      
    return(res)
  
# Driver code
list = [1, 2, 3]
print(convert(list))

Producción:

123

 
Enfoque #3: Usarmap()

Otro enfoque para convertir una lista de múltiples enteros en un solo entero es usar map()la función de Python con la función str para convertir la lista de enteros en una lista de strings. Después de esto, únelos en la string vacía y luego vuelve a convertirlos en enteros.

# Python3 program to convert a list
# of integers into a single integer
def convert(list):
      
    # Converting integer list to string list
    # and joining the list using join()
    res = int("".join(map(str, list)))
      
    return res
  
# Driver code
list = [1, 2, 3]
print(convert(list))

Producción:

123

 
Enfoque #4: Multiplicar por la potencia correspondiente de 10

Una forma más matemática, que no requiere convertir la lista de enteros en una lista de strings, es multiplicar cada elemento entero con su correspondiente potencia de 10 y luego resumirlo. Se necesita una complejidad de tiempo de O(n).

# Python3 program to convert a list
# of integers into a single integer
def convert(list):
      
    # multiply each integer element with its 
    # corresponding power and perform summation
  
    res = sum(d * 10**i for i, d in enumerate(list[::-1]))
      
    return(res)
  
# Driver code
list = [1, 2, 3]
print(convert(list))

Producción:

123

Una pequeña variación de este programa conduce a menos cálculos en el cálculo de la suma, es decir, utilizando reduce(). Esto hace uso de la regla de Horner, que factoriza el polinomio que representa el número para reducir el número de multiplicaciones.

res = functools.reduce(lambda total, d: 10 * total + d, list, 0)

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *