Largest Number Possible from List of Given Numbers Python (original) (raw)

Last Updated : 17 Jan, 2025

To find the largest number possible from a list of given numbers, we arrange the elements in such a way that their concatenation forms the largest possible number. This involves comparing the numbers based on how their string representations concatenate with each other. By sorting the numbers accordingly and then joining them, we can achieve the desired result.

**Using sorted()

**sorted()allows us to sort the list based on a custom key. By converting the numbers to strings, we can concatenate them in two orders and choose the order that produces the largest result.

Python `

from functools import cmp_to_key li= [23, 65, 98, 3, 4]

largest possible number in list

res = sorted(li, key = cmp_to_key(lambda i, j: -1 if str(j) + str(i) < str(i) + str(j) else 1)) print (''.join(map(str,res)))

`

**Explanation:

Table of Content

In this approach, we generate all possible permutations of the numbers, join each permutation to form a number, and then choose the maximum of these numbers.

Python `

from itertools import permutations li = [23, 65, 98, 3, 4]

res = int(max((''.join(i) for i in permutations(str(i) for i in li)), key = int)) print (str(res))

`

**Explanation:

In this method, we define a custom comparison function that compares two numbers based on their concatenated value in both possible orders. sorted() function then uses this comparison function to sort the list in descending order.

Python `

from functools import cmp_to_key li = [23, 65, 98, 3, 4]

custom comparison function

def compare(a, b): ab = int(str(a) + str(b)) ba = int(str(b) + str(a)) if ab > ba: return -1 elif ab < ba: return 1 else: return 0

res = sorted(li, key=cmp_to_key(compare)) print (''.join(map(str,res)))

`

**Explanation:

U**sing reduce()

This method combines the power of reduce() and a custom lambda function to perform the task in a concise manner. It sorts the numbers in descending order and then concatenates them using reduce().

Python `

from functools import reduce

li = [23, 65, 98, 3, 4]

combining the sorted elements into a single number using reduce() and lambda function

res = int(reduce(lambda x, y: x + y, map(str, sorted(li, key=lambda x: int(str(x)[0]), reverse=True)))) print(res)

`

**Explanation:

Similar Reads