示例1:
输入: [10,2]
输出: "102"
示例2:
输入: [3,30,34,5,9]
输出: "3033459"
解题代码:
class Compare(str): # 重写比较规则,按照新的比较规则实现升序排列,类似于C++中函数重载
def __lt__(self, y): # 重写内置函数 __lt__() 用于比较
return self+y str:
nums_l = sorted(map(str, nums), key=Compare) # 通过参数 key 传入比较函数
return ''.join(nums_l) # 将排序结果列表 nums_l 连接成结果字符串
题目中用到的 Python 内置函数解析
内置函数__lt__()
:
__lt__(self, other) # 5个福比较函数之一,含义如下:
gt(self, other) # 判断 self 对象是否大于 other 对象;
lt(self, other) # 判断 self 对象是否小于 other 对象;
ge(slef, other) # 判断 self 对象是否大于或者等于 other 对象;
le(self, other) # 判断 self 对象是否小于或者等于 other 对象;
eq(self, other) # 判断 self 对象是否等于 other 对象;
ne(self, other) # 判断 self 对象是否不等于 other 对象;
这些函数用于替代已经被取消的cmp()
函数,以上这些方法,object类实现了__eq__
和__ne__
两个方法。__lt__
、__le__
、__gt__
、__ge__
这些方法默认返回值为 “NotImplemented”,需要自定义类实现这些方法才能正确使用这些方法,当然__eq__
和__ne__
这两个方法也可以重写。
内置函数map()
:
map(function, iterable)
# 以参数序列 iterable 中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
内置函数join()
:
用于将序列中的元素以指定的字符连接生成一个新的字符串,如下:
str = "-";
seq = ("a", "b", "c"); # 字符串序列
print str.join( seq ); # a-b-c
内置函数sorted()
:
函数原型:sorted(iterable[, key][, reverse])
,从 iterable 中的项目返回新的排序列表,原迭代器中值不变。
有两个可选参数 key 和 reverse,必须指定为关键字参数。key 指定一个用于比较的函数,用于从迭代器中提取比较键进行比较,如:key=str.lower
。默认值为 None (直接比较元素)。
reverse 是一个布尔值。如果设置为 True,那么列表元素将按照每个比较反转进行排序。
参考博客:
https://blog.csdn.net/m0_38109046/article/details/86636511
https://blog.csdn.net/weixin_30932215/article/details/96449764