在我们实际使用中,对于列表的操作是十分常见的。对于列表的数据,在很多特殊的情况下我们需要对列表内的数据进行排列以达到我们特定的显示需求。今天,我们一起看一下python中关于列表排序的一些知识。
有些时候我们希望对列表进行排序后,列表可以保存我们排序后的结果,但是很多情况下我们只是希望通过列表的排序,临时的显示排序结果而已。所以对于列表的排序可以分为永久性的排序和临时性的排序。
sort()
sort()函数可以轻松的对列表进行排序。还是以上篇出现的列表为例。我们希望对成员列表通过名字的字母顺序进行排序。
#group members
group_members = ["zhangsan","lisi","wangwu","zhaoliu"];
print(group_members);
group_members.sort();
print(group_members);print(group_members);
现在我们看下经过排序后列表的变化:
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
['lisi', 'wangwu', 'zhangsan', 'zhaoliu']
列表经过sort排序后,其内的数据结构永久性的发生变化。
当然了,我们还可以对其进行反向排序,这里我们的使用sort的一个参数(reverse=true).
def sort(self, *, key: Optional[Callable[[_T], Any]] = ..., reverse: bool = ...)
下面我们按照字母的逆序进行排序:
group_members.sort(reverse=True);
其他不变,只是修改传入sort函数的参数。
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
['zhaoliu', 'zhangsan', 'wangwu', 'lisi']
结果也是永久性的改变,字母数序是按照字母表的逆序来排列。
当然了,不是所有情况下我们都需要永久性的修改列表,python同样提供了临时修改列表的方法。
sorted()
sorted函数保留了原来列表的排列顺序,同时又以特定的顺序呈现它们,该函数能够让我们以特定的方式显示列表内容同时又不改变列表的原始排列顺序。
#group members
group_members = ["zhangsan","lisi","wangwu","zhaoliu"];
print(group_members);
print(sorted(group_members));
输出:
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
['lisi', 'wangwu', 'zhangsan', 'zhaoliu']
这里同样可以对其进行反向排序。使用方法和sort函数相同,使用reverse=True参数。
print(sorted(group_members,reverse=True));
反转列表
假如我们在列表内存储了我们最近一年内买的所有书籍,并且是根据购买书籍的顺序存入列表中的,有一天你突然想看下最近购买的书籍,并且你希望是购买书籍的时间距离现在越近,那么它的顺序就排在前面。
那么现在我们该怎么办呢?当然了,学习过编程的朋友可能会说,使用一个循环反向打印列表就好了,可是到现在我们还没有学习怎么使用循环语句。有没有现成的方法能够帮助我们解决这个问题呢?
当然有,python提供了一个名为reverse的函数,该函数可以反转列表的排列顺序,这里的改变是永久性的。当然了,你可以很方便的还原原始顺序,再使用一次reverse就好了。
#group members
group_members = ["zhangsan","lisi","wangwu","zhaoliu"];
print(group_members);
#reverse array
group_members.reverse()
print(group_members);
group_members.reverse()
print(group_members);
输出:
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
['zhaoliu', 'wangwu', 'lisi', 'zhangsan']
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
可以看到经过两次反转后列表又是我们的原始列表了。
这里我们在说一下len()函数,通过这个函数我们可以方便的获取列表的长度。
#group members
group_members = ["zhangsan","lisi","wangwu","zhaoliu"];
#print group members
print(len(group_members));
输出:
4
当然了,与列表相关的函数有很多,我们就不一一介绍,等我们碰到的时候在细说。