Python 列表对象入门
列表 list
列表 ( list )是 *Python*的基本数据类型之一,它是一种 有序集合,用*[]*将 元素包括在内,并以 逗号为分隔符。 例如, [1, 2, 3, 4, 5] 就是一个 list:
>>>[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
该列表中保存了 5 个数字,像这种用于存储数据的对象,被称为 容器对象 。
索引
list 是一个有序列表,可以想象成由一系列槽位组成,槽位可以存储数据。 每个槽位都有一个唯一的编号,称为 索引 ( index ) 或者 下标 。 list 的下标从 0 开始,即第 1 个元素的下标是 0,第 *2*个元素的下标是 1,依此类推。
[image:4C69F72D-67E1-4CA2-B46F-225EC16B6205-657-000027C77E997F1A/847BF9AA-4BEC-42E5-A96A-C36C4735D971.png]
我们可以通过下标,取出对应元素。
负数下标
我们在描述某个元素时,除了 第几个元素 这种表达方式, 倒数第几个元素 也很常用。
>>>team[-2]
‘Paul’
值得注意的是,负数下标,从 -1 开始,从右往左 递减 。
[image:AF42A947-C4E2-4978-B3FD-8622BFABCA67-657-000027E7FF55BA90/4F140EED-1F03-4612-AD05-441275257EC2.png]
切片
除了按照各自的下标查找单个元素,我们还可以指定下标范围,取出范围内的元素。 比如,我们现在要取出第 2-4 个元素:
>>>team[1:4]
[‘Jim’, ‘Tom’, ‘Paul’]
左闭右开的区间
追加
使用 append 函数,往列表尾部添加新元素:
>>>team.append(‘Billy’)
Billy 是待添加元素,作为参数传给 append 函数。 这样一来, Billy 就在 *list* 里面了:
>>>team
[‘Tim’, ‘Jim’, ‘Tom’, ‘Paul’, ‘Mike’, ‘Billy’]
特别注意,append 函数将新元素添加到列表末尾:
[image:A6AAB1F9-8468-43BB-B93D-41C6FFA2FA51-657-0000282BC6E2D0E1/B7A71280-4CDC-4282-8A6F-C3C08DC111F4.png]
合并
使用 extend 函数,将列表 basketball_girls 加到列表 team 里面去:
>>>team.extend(basketball_girls)
>>>team
[‘Tim’, ‘Jim’, ‘Tom’, ‘Paul’, ‘Mike’, ‘Billy’, ‘Lucy’, ‘Jessica’, ‘Alice’]
[image:7806CEB8-B84B-464E-8ECB-6F1A4BAD10AE-657-00002866D7A0964E/F6F0E8C3-E98C-489F-A6A7-2CBDA1473EE1.png]
extend 函数,将待合并的列表,追加到原列表的末尾。
更改
学期末了,Paul 由于备考退出了球队,他找来好朋友 Bob 顶替自己。 这时,我们需要将 Paul 的位置替换成 Bob 。 首先,使用 index 函数,找出 Paul 的下标:
>>> i = team.index('Paul')
>>> i
3
我们将找到的下标保存到变量 i 中,访问 i ,发现 Paul 的下标是 3 。 现在,验证下这个下标是否正确。 由于我们将下标保存在变量 i 中,因此也可以这样取出元素的值:
>>> team[i]
'Paul'
正确无误!接下来,将 Paul 替换成 Bob :
>>> team[i] = 'Bob'
再次访问变量 team ,看到下标为 3 的位置已经替换成 Bob 了:
>>> team
['Tim', 'Jim', 'Tom', 'Bob', 'Mike', 'Billy', 'Lucy', 'Jessica', 'Alice’]、
删除
Tom 也想退出球队,但是却找不到其他人来替换自己。 这时,我们借助 remove 函数,从列表中删除 Tom 的信息。 remove 函数将待删除的元素作为参数:
>>> team.remove('Tom')
查看 team 变量,Tom 的名字已经被删除了:
>>> team
['Tim', 'Jim', 'Bob', 'Mike', 'Billy', 'Lucy', 'Jessica', 'Alice']
另外,还可以调用 pop 函数来删除元素。 与 remove 函数不同的是,pop 函数接收的参数是待删除元素的下标。 Tom 是列表中的第 3 个元素,下标是 2 。因此,执行如下代码,也可以将 Tom 从列表中删除:
>>> team.pop(2)
pop 函数也可不指定任何参数,默认将删除并返回列表中的最后一个元素,等价于:
>>> team.pop(-1)
举个例子,我们对 team 执行 pop 操作:
>>> team
['Tim', 'Jim', 'Bob', 'Mike', 'Billy', 'Lucy', 'Jessica', 'Alice']
>>> team.pop()
'Alice'
>>> team
['Tim', 'Jim', 'Bob', 'Mike', 'Billy', 'Lucy', 'Jessica']
看,Alice 被删除了!
排序
我们还可以调用 sort 函数,对列表中的元素进行排序:
>>> team.sort()
那是按照什么规则来排序的呢?我们来观察一下排序后的列表:
>>> team
['Billy', 'Bob', 'Jessica', 'Jim', 'Lucy', 'Mike', 'Tim']
可以看到,列表中的元素排序规则如下:
比较首字母,字母小的排在前面;
首个字母相同,则比较第二个字母,字母小的排在前面;
依此类推,直到比较出大小;
那如果列表中存储的元素是数字呢? 按照上述的排序规则,猜测应该是从小到大排序。 事不宜迟,我们马上来实验一把:
>>> num = [2, 33, 4, 12, 5]
>>> num.sort()
>>> num
[2, 4, 5, 12, 33]
果不其然,真是按从小到大排序!
那如果要从大到小排序,有什么办法吗? sort 函数提供了一个开关,可以让我们选择排序规则。 将 reverse 参数赋值为 True ,使用 从大到小 规则排序:
>>> team.sort(reverse=True)
访问 team,元素已经按从大到小排序了:
>>> team
['Tim', 'Mike', 'Lucy', 'Jim', 'Jessica', 'Bob', 'Billy']
评论