班里成立了一支篮球队,最初由 Tim 等 5 名同学组成。 如何对篮球队员进行管理呢? 学完本节的 列表对象 ,这个问题对你来说将是小菜一碟。
概述
列表 ( list ) 是 Python 的基本数据类型之一,它是一种 有序集合 ,用 [] 将 元素 围起来,元素间以 逗号 分隔。 例如, [1, 2, 3, 4, 5] 就是一个 list :
|
|
该列表中保存了 5 个数字,像这种用于存储数据的对象,被称为 容器对象 。
那么,怎么用 list 来管理球队成员呢? 我们可以用一个 list 来存储这些同学的信息:
|
|
现在, team 变量保存了一个 list , list 里的每个元素对应的是每个同学的名字:
|
|
索引
list 是一个有序列表,可以想象成由一系列槽位组成,槽位可以存储数据。 每个槽位都有一个唯一的编号,称为 索引 ( index ) 或者 下标 。 list 的下标从 0 开始,即第 1 个元素的下标是 0 ,第 2 个元素的下标是 1 ,依此类推。
我们可以通过下标,取出对应元素。 例如, Tim 是列表中的第 1 个元素,下标为 0 。 因此,我们可以这样来访问:
|
|
负数下标
我们在描述某个元素时,除了 第几个元素 这种表达方式, 倒数第几个元素 也很常用。 例如, Paul 在列表中是第 4 个元素,同时也是倒数第 2 个元素。 列表用 负数下标 来表示元素倒数的位置,因此倒数第 2 个元素可以这样访问:
|
|
值得注意的是,负数下标,从 -1 开始,从右往左 递减 。
切片
除了按照各自的下标查找单个元素,我们还可以指定下标范围,取出范围内的元素。 比如,我们现在要取出第 2-4 个元素:
|
|
需要注意的是,由于元素的下标是从 0 开始。 那么第 2 个元素,下标应该是 1 ;第 4 个元素,下标则是 3 。 既然如此,为什么代码是 team[1:4] 呢?其实,取值范围 [1:4] ,相当于数学上一个左闭右开的区间,即 [1,4)。 因此,范围 [1:4] 所代表的就是第 2-4 个元素。
当然,球队的队员并不是固定的,可能会有新同学加入,也可能会老队员退出。 那么,如何对 list 进行修改呢? 这就需要借助 list 的内置函数来帮助我们完成操作了。
追加
Tim 介绍他的朋友 Billy 加入球队,我们使用 append 函数,往列表尾部添加新元素:
|
|
Billy 是待添加元素,作为参数传给 append 函数。 这样一来, Billy 就在 list 里面了:
|
|
特别注意,append 函数将新元素添加到列表末尾:
合并
班里有几名女同学也很喜欢打篮球,她们组成了自己的小团体 basketball_girls :
|
|
为了与男同学切磋球技,她们想加入到班级篮球队中。 我们可以使用 extend 函数,将列表 basketball_girls 加到列表 team 里面去:
|
|
注意到,extend 函数,将待合并的列表,追加到原列表的末尾:
更改
学期末了,Paul 由于备考退出了球队,他找来好朋友 Bob 顶替自己。 这时,我们需要将 Paul 的位置替换成 Bob 。 首先,使用 index 函数,找出 Paul 的下标:
|
|
我们将找到的下标保存到变量 i 中,访问 i ,发现 Paul 的下标是 3 。 现在,验证下这个下标是否正确。 由于我们将下标保存在变量 i 中,因此也可以这样取出元素的值:
|
|
正确无误!接下来,将 Paul 替换成 Bob :
|
|
再次访问变量 team ,看到下标为 3 的位置已经替换成 Bob 了:
|
|
删除
Tom 也想退出球队,但是却找不到其他人来替换自己。 这时,我们借助 remove 函数,从列表中删除 Tom 的信息。 remove 函数将待删除的元素作为参数:
|
|
查看 team 变量,Tom 的名字已经被删除了:
|
|
另外,还可以调用 pop 函数来删除元素。 与 remove 函数不同的是,pop 函数接收的参数是待删除元素的下标。 Tom 是列表中的第 3 个元素,下标是 2 。因此,执行如下代码,也可以将 Tom 从列表中删除:
|
|
pop 函数也可不指定任何参数,默认将删除并返回列表中的最后一个元素,等价于:
|
|
举个例子,我们对 team 执行 pop 操作:
|
|
看,Alice 被删除了!
排序
我们还可以调用 sort 函数,对列表中的元素进行排序:
|
|
那是按照什么规则来排序的呢?我们来观察一下排序后的列表:
|
|
可以看到,列表中的元素排序规则如下:
- 比较首字母,字母小的排在前面;
- 首个字母相同,则比较第二个字母,字母小的排在前面;
- 依此类推,直到比较出大小;
那如果列表中存储的元素是数字呢? 按照上述的排序规则,猜测应该是从小到大排序。 事不宜迟,我们马上来实验一把:
|
|
果不其然,真是按从小到大排序!
那如果要从大到小排序,有什么办法吗? sort 函数提供了一个开关,可以让我们选择排序规则。 将 reverse 参数赋值为 True ,使用 从大到小 规则排序:
|
|
访问 team,元素已经按从大到小排序了:
|
|
小结
这一节,我们学到了很多关于 list 的概念及操作:
- 列表 ( list ) 是一种 有序 集合;
- list.append(element) :用于追加单个元素;
- list.extend([element1, element2, …, elementN]) : 用于合并另外一个列表;
- list.index(element) :用于获取指定元素的下标;
- list.remove(element) :以 待删除元素 为参数,删除指定元素;
- list.pop() :删除并返回列表中最后一个元素;
- list.pop(index) :以 待删除元素下标 为参数,删除并返回指定元素;
- list.sort() :对列表中的元素进行排序;
【小菜学Python】系列文章首发于公众号【小菜学编程】,敬请关注: