一,lambda运算符介绍
使用python lambda语句可以创建表达式形式的匿名函数,首要用途指定短小的回调函数。使用lambda语句定义的代码必须是合法的表达式,在语句中不能出现多条语句和其他非表达式语句,如for和while等。lambda表达式遵循与函数相同的作用域规则。
使用方法:
lambda args:expression
args是以逗号分隔的参数列表,而expression是用到这些参数的表达式,例:
a = lambda x,y : x+y
r = a(2,3)
r的值为5
二,列表排序
1,使用sort函数
sort函数紧用于对list对象在原位置进行排序,即直接改变原来的列表,从而让其中的元素能按一定的顺序排列,而不是返回一个已排好序的列表副本。
函数原型为:
L.sort(cmp=None, key=None, reverse=False)
sort函数提供2个可选参数:cmp,key,reverse。
cmp:可以自定义一个函数,使按照特定的方式进行排序,这个函数直接对元素进行比较。例如cpm(x,y)这种形式
key:用列表元素的某个属性和函数进行作为关键字,函数并不是像cpm指定的函数直接来确定大小,而是为每个元素创建一个键,然后所有元素根据这个键值来排序。
reverse:指定是升序还是降序排列。默认是升序排列
1)简单按数值大小排序
In [64]: a = [1,3,5,2]
In [65]: a.sort()
In [66]: print a
[1, 2, 3, 5]
如上所示,默认为从小到大排序。我们也可以从大大小,逆序配列:
In [68]: a = [1,3,5,2]
In [69]: a.sort(reverse=True)
In [70]: print a
[5, 3, 2, 1]
2)指定关键参数排序
使用len函数作为键函数,按元素的长度排序:
In [73]: a=['abc','cba','bb','fffff']
In [74]: a.sort(key=len)
In [75]: print a
['bb', 'abc', 'cba', 'fffff']
把元素转化为小写,然后排序(根据字母对应的标准ASCII码的十进制值排序):
In [100]: a=['abc','cba','bb','fffff','Aaa','Csdf','Bsdf']
In [101]: a.sort(key=str.lower)
In [102]: print a
['Aaa', 'abc', 'bb', 'Bsdf', 'cba', 'Csdf', 'fffff']
按元素大小进行排序:
In [127]: a = [1,3,5,2,6]
In [128]: a.sort(cmp=lambda x,y:cmp(x,y))
In [129]: print a
[1, 2, 3, 5, 6]
或
In [130]: a = [1,3,5,2,6]
In [131]: a.sort(key=lambda x:x)
In [132]: print a
[1, 2, 3, 5, 6]
2,使用sorted函数
In [12]: a=[('a','2014-10-13'),('b','2014-10-10'),('c','2014-10-12')]
按照列表中元祖的第二个元素排序
In [13]: sorted(a,key=lambda a:a[1], reverse=True)
Out[13]: [('a', '2014-10-13'), ('c', '2014-10-12'), ('b', '2014-10-10')]
三,字典排序
先把无序的字典转化为列表,然后抽取列表中元素集合的对应值进行排序。
函数原型:
sorted(iterable, cmp=None, key=None, reverse=False)
iterable:指定一个迭代的对象,列表,集合等
其它三个参数和sort类似。
按照字典的value排序:(列表中的元素是集合,把集合中的第1个或者第2个元素作为key,即键值)
In [142]: tmp = {'a': 8, 'b': 1, 'c': 3,'d':12}
In [143]: sorted(tmp.items(),key=lambda x:x[1],reverse=True)
Out[143]: [('d', 12), ('a', 8), ('c', 3), ('b', 1)]
安装字典的key进行排序:
In [145]: tmp = {'a': 8, 'b': 1, 'c': 3,'d':12}
In [146]: sorted(tmp.items(),key=lambda x:x[0],reverse=True)
Out[146]: [('d', 12), ('c', 3), ('b', 1), ('a', 8)]