在Python中编写一个程序,将给定列表中的所有元素排序并合并为一个字符串
假设我们有一个正整数列表。我们必须将列表按降序排序,然后将所有元素连接在一起形成一个字符串。我们返回连接的字符串。
所以,如果输入是input = [415, 78, 954, 123, 5],那么输出将是954785415123。
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个函数cmp()。 这将采取l,r
- 如果(l的字符串表示+ r的字符串表示的整数值)>(r的字符串表示+ l的字符串表示的整数值)的整数值,则
- 返回1
- 否则,
- 返回-1
- 如果(l的字符串表示+ r的字符串表示的整数值)>(r的字符串表示+ l的字符串表示的整数值)的整数值,则
- 将列表input按照函数compare进行排序
- 将input中的所有元素连接成一个字符串并返回它。
示例
让我们看下面的实现,以获得更好的理解−
from functools import cmp_to_key
def cmp(l, r):
if int(str(l) + str(r)) > int(str(r) + str(l)):
return 1
else:
return -1
def solve(input):
input.sort(key=cmp_to_key(cmp), reverse=True)
return "".join(map(str, input))
print(solve([415, 78, 954, 123, 5]))
输入
[415, 78, 954, 123, 5]
输出
954785415123