【发布时间】:2020-11-30 09:38:40
【问题描述】:
我需要按以下形式对数组进行排序:
输入 [904、917、945、998、9、82、43、1112、99、97、93]
输出 [9、99、998、97、945、93、917、904、88、32、1112]
排序规则是(最大第一个数字,最大第二个数字,最大第三个数字,......),如果发生冲突,将保留较小的长度数字。
例如。在 9 和 998 中,9 会排在第一位,因为第一位数字相同,但位数较少。
如果我可以将逻辑应用为 Python 中排序功能的键,那就太好了。
更新
我实际上是想在 Leetcode 上解决这个问题: https://leetcode.com/problems/largest-number/
为了解决这个问题,我需要我修改过的那种排序函数来最终解决这个问题:
nums = [904, 917, 945, 998, 9, 82, 43, 1112, 99, 97, 93]
nums = [str(i) for i in nums]
n = max(map(len,nums))
nums = sorted(nums, key = lambda x : (x.ljust(n,x[0]), x[-1]), reverse=True)
【问题讨论】:
-
到目前为止你尝试过什么?什么没有解决这个问题?具体一点。
-
输入和输出列表甚至没有相同的整数。
-
@Jab 是的,我更正了。
-
@GreenCloakGuy 我什么都没尝试,我一直在寻找实现这种排序的最快和最干净的方法
标签: python arrays python-3.x list sorting