Python: el entero más pequeño posible a partir de la combinación de elementos de la lista

Dada una lista de enteros, la tarea es obtener el entero más pequeño posible a partir de la combinación de los elementos de la lista. Este es uno de los problemas que es esencial desde un punto de vista competitivo y este artículo discute varias abreviaturas para resolver este problema en Python. Analicemos ciertas formas en que se puede resolver este problema.

Método #1: Usar sorted()+ lambda
La combinación de la función anterior se puede usar para realizar esta tarea. La función sorted realiza el tipo de índices de lista convertidos en strings y las funciones lambda manejan la operación de conversión e iteración.

# Python code to demonstrate 
# Smallest number from list
# using sorted() + lambda
import functools
  
# initializing list 
test_list = [23, 65, 98, 3, 4]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# lambda for custom operation
custom = lambda i, j: -1 if str(j) + str(i) > str(i) + str(j) else 1
  
# using sorted() + custom function
# Smallest number from list 
res = sorted(test_list, key = functools.cmp_to_key(custom))
  
  
# printing result 
print ("The smallest possible number : " + "".join(map(str, res)))
Producción :

The original list is : [23, 65, 98, 3, 4]
The smallest possible number : 23346598

Método #2: Usaritertools.permutation() + join() + min()

Se itertools.permutationpuede usar para obtener una posible permutación y la función min elige el mínimo después de convertirlo en un número entero como resultado de la salida combinada dada por la función de combinación.

# Python3 code to demonstrate 
# Smallest number from list
# using itertools.permutation() + join() + min()
from itertools import permutations
  
# initializing list 
test_list = [23, 65, 98, 3, 4]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# using itertools.permutation() + join() + min()
# Smallest number from list
res = int(min((''.join(i) for i in permutations(str(i) 
                     for i in test_list)), key = int))
  
# printing result 
print ("The smallest possible number : " + str(res))
Producción :

The original list is : [23, 65, 98, 3, 4]
The smallest possible number : 23346598

Publicación traducida automáticamente

Artículo escrito por manjeet_04 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 *