python - 整数字符串的自定义比较
问题描述
对于输入3 30 34 5 9
,预期的最大输出数为:9534330
任何输入为什么排序返回与输入相同的结果:3303459
?
import functools
def compare(item1, item2):
return int(item1 + item2) - int(item2 + item1)
inputList = input().split()
sorted(inputList, key=functools.cmp_to_key(compare))
max = "".join([ x for x in inputList])
print(max)
解决方案
原因是因为您以错误的顺序对列表进行排序并且您没有使用排序列表。目前,您正在按第一位数字升序对列表进行排序。除此之外,sorted()
函数返回一个新列表,因此您需要将其保存在变量中。
您可以通过使用reverse()
排序列表上的
import functools
def compare(item1, item2):
return int(item1 + item2) - int(item2 + item1)
inputList = input().split()
inputList = sorted(inputList, key=functools.cmp_to_key(compare))
inputList.reverse()
max = "".join([ x for x in inputList])
print(max)
或者在compare()
函数中切换操作
import functools
def compare(item1, item2):
return int(item2 + item1) - int(item1 + item2)
inputList = input().split()
inputList = sorted(inputList, key=functools.cmp_to_key(compare))
max = "".join([ x for x in inputList])
print(max)
推荐阅读
- oracle-sqldeveloper - 在单个 SQL 查询中访问多个复制模式?
- kafka-consumer-api - RetryBackoffSpec 不适用于引发异常的 KafkaReceiver
- java - Eclipse JDT Null Pointer 分析似乎对无法复制的 Objects.requireNonNull 具有特殊行为
- python - 来自 sympy.integrate 和 Heaviside 的奇怪结果
- spring - 是否可以使用 ANT 创建 Spring 5 组件索引?
- python - 如何使用python根据csv中的列名写入标题
- python - 为什么我没有从这段代码中得到任何输出?
- vue.js - 我可以检查我当前的路线是否在给定的路线列表中吗?
- asp.net-core - 如何在 ASP.NET Core Web 部署包中设置 ACL?
- python - 'list' 对象没有属性 'keys'