Python - 从给定数字列表中获取最大可能的数字


在本文中,我们将学习如何从给定的数字列表中找到最大的可能数字。我们将看到两种不同的方法来解决这个问题。请按照以下步骤解决问题。

  • 导入itertools模块用于排列方法。
  • 用数字和空列表初始化列表。
  • 迭代列表的排列。
    • 连接所有组合并将结果添加到空列表。
  • 使用max方法和int作为键从结果中查找最大数。
  • 将字符串转换为整数并打印。

示例

让我们看看代码。

 在线演示

# importing the module
import itertools

# initializing the list
numbers = [45, 35, 138, 43, 67]

# result
result = []

# permutations
for permutation in itertools.permutations(str(number) for number in numbers):
   result.append(''.join(permutation))

# finding max
maximum = max(result, key=int)

# printing the max
print(int(maximum))

如果运行上述代码,则会得到以下结果。

输出

67454335138

让我们看看另一种解决问题的方法。我们将使用sorted函数来解决这个问题。请按照以下步骤编写代码。

  • 将列表传递给sorted函数。
  • 编写一个名为get_key的函数,该函数接受两个参数。
  • 如果str(first) + str(second) > str(second) + str(first),则返回-1,否则返回1。
  • 使用join方法连接列表元素。
  • 通过转换为整数来打印结果。

由于我们使用函数作为键,因此必须使用functools中的cmp_to_key方法将其转换为键。让我们看看代码。

示例

 在线演示

from functools import cmp_to_key

# initializing the list
numbers = [45, 35, 138, 43, 67]

def get_key(first, second):
   if str(first) + str(second) > str(second) + str(first):
      return -1
   return 1

# getting the result
result = sorted(numbers, key=cmp_to_key(get_key))

# joining the result
result = "".join(str(integer) for integer in result)

# printing the result
print(int(result))

如果运行上述代码,则会得到以下结果。

输出

67454335138

结论

如果您在本教程中遇到任何疑问,请在评论区提出。

更新于:2020年11月13日

1K+ 浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告