先附上代码,后面具体讲解一下为何这样写以及代码中涉及到的python方法
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
if not numbers:
return "" #没有数字,返回空
lmb = lambda n1, n2:int(str(n1)+str(n2))-int(str(n2)+str(n1))
array = sorted(numbers, cmp=lmb)
return ''.join([str(i) for i in array])
先介绍一下lambda的用法,我自己刚开始也是比较懵逼的
对于lambda搞清下面三个问题就够了
1.lambda是什么,
2.为什么要用lambda,
3.如何使用lambda
用例子说明问题:
For Q1:
g = lambda x:x+1
>>g(1) =2
lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体用函数
来表示:
def g(x):
return x+1
lambda简化了函数定义的书写形式。使得代码更为简洁,使用函数的定义方式更为直观,易理解。
for Q2:
python 在遍历对象处理方面,for ...in ...if 语法已经十分强大了,并且在可读性上胜过了lambda,所以这种情况下并不推荐使用lambda.
For Q3:
lambda 是为了减少单行函数的定义而存在的,就是我们没必要为了一个一行的函数重新去def...return....,这样很麻烦呀。
lambda 的大量使用可以简化代码,但是一定程度上降低代码的可读性,额,比如你不熟悉python的话可能不知道我在写啥。
lambda小结一下:
(1)lambda定义了一个匿名函数
(2)lambda并不会带来程序效率的提高,只会使代码简洁
(3)在能够使用for ... in...if..的情况下坚决不使用lambda
(4)如果使用lambda就请不要在里面加上循环部分,如果非要循环,请重新def一个函数
2,关于sorted()
sorted() 对所有可迭代的对象进行排序操作
sorted(iterable[, cmp[, key[, reverse]]])
参数说明: