列表正序排序
sort()排序方法
此函数方法对列表内容进行正向排序,排序后的新列表会覆盖原列表(id不变),也就是sort排序方法是直接修改原列表list排序方法。
>>> a = [5,7,6,3,4,1,2]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6, 7]
许多python初学者,对sort()方法比较糊涂。有的时候会需要一个排序好的列表,而又想保存原有未排序列表,他们会这么操作:
>>> a = [5,7,6,3,4,1,2]
>>> b = a.sort()
>>> print b
None
这个时候问题出现了,变量b得到的是一个空值。那么想要得到排序好的列表,又想保留原列表怎么办呢?列表sorted()方法可以帮你实现。
sorted()方法
即可以保留原列表,又能得到已经排序好的列表sorted()操作方法如下:
>>> a = [5,7,6,3,4,1,2]
>>> b = sorted(a)
>>> a
[5, 7, 6, 3, 4, 1, 2]
>>> b
[1, 2, 3, 4, 5, 6, 7]
sorted()方法可以用在任何数据类型的序列中,返回的总是一个列表形式:
>>> sorted("www.baidu.com")
['.', '.', 'a', 'b', 'c', 'd', 'i', 'm', 'o', 'u', 'w', 'w', 'w']
列表反向/倒序排序
列表反向排序
方式一:List reverse()方法
reverse() 函数用于反向列表中元素。
>>> a=[1,5,3,7]
>>> a.reverse()
>>> a
[7, 3, 5, 1]
此方法对原列表进行了修改
方式二:使用reversed()函数
>>> a=[1,5,3,7]
>>> b=list(reversed(a))
>>> b
[7, 3, 5, 1]
注意:reversed()函数返回的是一个迭代器,而不是一个List,需要再使用List函数转换一下。
此方法不对原列表进行修改
方式三: 使用分片
>>> a=[1,5,3,7]
>>> c=a[::-1]
>>> c
[7, 3, 5, 1]
注意:其中[::-1]代表从后向前取值,每次步进值为1
大家可以测试d=a[:-1]和e=a[::-2]
列表倒序排序
方法一:使用sort()和reverse()
>>> a
[1, 5, 3, 7]
>>> a.sort()
>>> a
[1, 3, 5, 7]
>>> a.reverse()
>>> a
[7, 5, 3, 1]
此方法对原列表进行了修改
方法二:使用sorted()和reverse参数
>>> a=[1,5,3,7]
>>> b=sorted(a,reverse=True)
>>> b
[7, 5, 3, 1]
推荐使用此方法倒序排序
按指定条件排序
如这个列表,要求按照分数的大小,从高到低排序
>>> student=[('john', 'A', 10),('jane', 'B', 15),('dave', 'B', 12)]
>>> sorted(student,key=lambda student:student[2],reverse=True)
[('jane', 'B', 15), ('dave', 'B', 12), ('john', 'A', 10)]
网友评论