Python - 从给定数字列表中找出可能的最大数字

pythonserver side programmingprogramming

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

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

示例

让我们看看代码。

# 导入模块
import itertools

# 初始化列表
numbers = [45, 35, 138, 43, 67]

#结果
result = []

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

# 查找最大值
maximum = max(result, key=int)

# 打印最大值
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

# 初始化列表
numbers = [45, 35, 138, 43, 67]

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

# 获取结果
result = sorted(numbers, key=cmp_to_key(get_key))

# 连接结果
result = "".join(str(integer) for integer in result)

# 打印结果
print(int(result))

如果您运行上述代码,那么您将获得以下结果。

输出

67454335138

结论

如果您对本教程有任何疑问,请在评论部分中提及。


相关文章