Largest Number Possible from List of Given Numbers - Python
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:
cmp_to_key()
converts the comparison function to a key for sorting.- Lambda function checks if
str(j) + str(i)
is smaller than str(i) + str(j)
. If true, i
comes before j
. sorted()
sorts the numbers based on this custom logic.''.join()
concatenates the sorted numbers into a string.
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:
permutations(str(i) for i in li)
creates all permutations of the digits of each number.''.join(i)
combines the digits in each permutation to form a number.max(..., key=int)
selects the largest number by comparing the integer values of the permutations.int()
converts the result to an integer
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:
compare(a, b)
concatenates a
and b
in both orders, then compares them.sorted(li, key=cmp_to_key(compare))
sorts the list using the custom comparison.''.join(map(str, res))
concatenates the sorted numbers into a single string.
Using 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:
str(x)[0]
converts each number to a string and takes the first digit.key=lambda x: int(str(x)[0])
sorts the list li based on the first digit of each number.map(str, ...)
converts the sorted numbers to strings so they can be concatenated.reduce(lambda x, y: x + y, ...)
combines the sorted strings into a single string by concatenating them.int(...)
converts the concatenated string into an integer.reverse=True
sorts the numbers in descending order based on the first digit.
Similar Reads
Python Program to Find Largest Number in a List Finding the largest number in a list is a common task in Python. There are multiple way to do but the simplest way to find the largest in a list is by using Python's built-in max() function:Using max()Python provides a built-in max() function that returns the largest item in a list or any iterable.
3 min read
Position of maximum and minimum element in a list - Python In Python, lists are one of the most common data structures we use to store multiple items. Sometimes we need to find the position or index of the maximum and minimum values in the list. For example, consider the list li = [3, 5, 7, 2, 8, 1].The maximum element is 8, and its index is 4.The minimum e
3 min read
Python | Indices of N largest elements in list Sometimes, while working with Python lists, we can have a problem in which we wish to find N largest elements. This task can occur in many domains such as web development and while working with Databases. We might sometimes, require to just find the indices of them. Let's discuss a certain way to fi
5 min read
Python - Smallest integer possible from combination of list elements Given a list of integers, the task is to get smallest integer possible from the combination of list elements. This is one of the problems that is essential in a competitive point of view and this article discusses various shorthands to solve this problem in Python. Letâs discuss certain ways in whic
4 min read
Python Program to Print Largest Even and Largest Odd Number in a List Auxiliary Given a list. The task is to print the largest even and largest odd number in a list. Examples: Input: 1 3 5 8 6 10 Output: Largest even number is 10 Largest odd number is 5 Input: 123 234 236 694 809 Output: Largest odd number is 809 Largest even number is 694 The first approach uses two
7 min read