列表的排序和计数

Zss 发表于:

平常经常需要用列表的排序,每次都是使用到了就去查资料,一直没有一个系统点的总结,有时候时不时冒出一个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)