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)))
The original list is : [23, 65, 98, 3, 4] The smallest possible number : 23346598
Método #2: Usaritertools.permutation() + join() + min()
Se itertools.permutation
puede 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))
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