平常经常需要用列表的排序,每次都是使用到了就去查资料,一直没有一个系统点的总结,有时候时不时冒出一个None
排序的方法其实也就几个而已,所以还是总结一下相关的使用方法和区别
1.a.sort()方法
从小到大:b = a.sort() 从大到小:b = a.sort(reverse=True) 当不需要原始列表时,使用这个更为方便
这个方法是对列表从小到大来排序,它会改变原始的列表的排序,若将其赋值到新的变量中,这是不行的,结果为None
a = [2,3,6,87,9,23423,23,312,5234,6457,56] b = a.sort() print a print b 输出: [2, 3, 6, 9, 23, 56, 87, 312, 5234, 6457, 23423] None
2.sored()函数
从小到大:b = sorted(a) 从大到小:b = sorted(a,reverse=True) 当需要保留原始列表时,使用这个更为方便
对于所有的可迭代对象都适用,而sort()只对列表生效
t = sorted({2: 'D', 1: 'B', 8: 'B', 3: 'E', 4: 'A'}) print t 输出: [1, 2, 3, 4, 8]
这个函数是将列表从小到大排序,它不修改原始列表的排序,需要赋值到一个新的变量中
a = [2,3,6,87,9,23423,23,312,5234,6457,56] b = sorted(a) print a print b 输出: [2, 3, 6, 87, 9, 23423, 23, 312, 5234, 6457, 56] [2, 3, 6, 9, 23, 56, 87, 312, 5234, 6457, 23423]
3.a.reverse()列表的翻转
a = [2,3,6,87,9,23,56] b = a.reverse() print a print b 输出: [56, 23, 9, 87, 6, 3, 2] None
4.当需要排序的元素为数字字符时的排序
a = ['4','3','6','7','9','1','2'] b = a.sort() print a print b ['1', '2', '3', '4', '6', '7', '9'] None
这种情况下是按照第一个字符的ascii码来排序,那么再看下另外一种情况
a = ['4','23','46','17','9','1','2'] b = a.sort() print a print b 输出: ['1', '17', '2', '23', '4', '46', '9'] None
可以发现始终按照第一个字符来排序的
5.列表中元素为元组时的排序
a = [(5,'4'),(6,'3'),(2,'6'),(9,'7'),(1,'9'),(5,'1')] b = a.sort() print a print b 输出: [(1, '9'), (2, '6'), (5, '1'), (5, '4'), (6, '3'), (9, '7')] None
可以看出会先按照每个元组中的第一个元素的大小来排序
6.列表中元素的计数 a.count(需要计算的元素)
和sort()不一样,若sort()排序后的赋值则为None,而计数的方法则是可以的
a = [6,1,12,54,54,54,57,8,31,8,54,6,74,61,4,54] b = a.count(54) print a print b 输出: [6, 1, 12, 54, 54, 54, 57, 8, 31, 8, 54, 6, 74, 61, 4, 54] 5
7.列表中元素的计数前20,返回列表,元素为元组(名字,数量)
from collections import Counter c = Counter(列表).most_common(20)