对列表进行排序是常见的操作,最简单的方式是使用sort()函数。
1、一般用法
不管列表元素是数、字符串还是元组,函数sort()总是就地操作列表,按升序进行排列元素,并返回None。
#数>>> lst1 = [1, 5, 3, 2]>>> lst1.sort()>>> lst1[1, 2, 3, 5]#字符串>>> lst2 = ['up', 'down', 'left', 'right']>>> lst2.sort()>>> lst2['down', 'left', 'right', 'up']#元组>>> lst3 = [(1, -1), (3, 5), (2, 1), (1, 2)]>>> lst3.sort()>>> lst3[(1, -1), (1, 2), (2, 1), (3, 5)]
若想实现降序排列,可直接在调用sort()后再调用reverse()函数,或者使用reverse选项sort(reverse = True)。
2、使用key
使用sort()函数中的次要排序键,产生可用于排序的值的函数,即定义了排序的规则。如根据字符串的长度进行排序。
>>> lst2 = ['up', 'down', 'left', 'right']>>> lst2.sort(key = len)>>> lst2['up', 'down', 'left', 'right']
也可以传入lamdba函数。如根据各字符串不同字母的数量进行排序。
>>> strs = [ 'foo', 'card', 'bar', 'aaaa', 'abab']>>> strs.sort(key = lambda x : len(set(list(x))))>>> strs['aaaa', 'foo', 'abab', 'bar', 'card']