Mr.林:
小白,今天我们来学习列表,列表(
li
s
t
)是Python中内置的一种最基本的数据结构。
小白:
数据结构?什么是数据结构呀?
Mr.林:
数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。它是计算机存储、组织数据的方式。可以看作一种存储数据的容器。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
Python中内置的数据结构有列表、元组、字典、集合,其中列表是我们最常用的一种数据结构。
小白:
内置的?那就是还有其他数据结构?
Mr.林:
没错,像之前使用过的数据框(dataframe),就是Pandas中的数据结构,这个后面再说。
我们先来学习列表,列表是一组用方括号括起来、逗号分隔的数据。列表的元素可以是任何数据类型的,但使用时通常各个元素的数据类型是相同的,特别是进行数据分析时,同一列表的数据元素的数据类型都必须是相同的。
现在我们就来定义一个名为a的列表,并赋值1~5的自然数序列,然后用type函数查看a的类型,得到的结果是list,也就是列表。
a = [1, 2, 3, 4, 5]
type(a)
list
我们再来定义一个名为b的列表,里面赋值的是字符,所以各个字符需要使用单引号引起来。
b = ['a', 'b', 'c', 'd', 'e']
小白:
那列表如何使用呢?
Mr.林:
我们先了解一个概念——索引,
索引是用于快速查询数据的一种数据结构,索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
当数据量大时,查找索引比起要查找全部内容快很多,并且由于索引数据量小,也非常节省计算机资源。
列表的索引代表列表中各个数据元素在列表中的位置,第一个数据元素索引是0,第二个数据元素是1,第三个数据元素是2,依次向后递增。
对,没错,索引就是从0开始,而不是从1开始,刚接触编程的朋友可能很不习惯,没关系的,你用久了就习惯了。
刚才所说的是正向索引,也就是从左到右、从前往后排列,如果从右往左、从后往前排列,那就是负向索引,负向索引是从-1开始,然后是-2,依次向前递减。
现在我们就来看如何使用操作列表了,列表的常用操作有:查、增、删、改、排序、统计
第一个:查
可以通过
变量名
[
索引值
]
的方式访问单个值
a = [1, 2, 3, 4, 5]a[0]
1
a[4]
5
a[-3]
3
小白:
那我能取多个值吗?
Mr.林:
可以的,需要使用切片功能,通过
变量名
[
开始
索引值:结束
索引值:步长
]
的方式访问多个值。
一个完整的切片表达式包含两个冒号“:”,用于分隔三个参数(
开始
索引值:结束
索引值:步长
),当只有前面一个冒号“:”时,默认第三个参数
步长
=1。
步长
:正负数均可,其绝对值大小决定了切取数据时的“步长”,而正负号决定了“切取方向”,正号表示从左往右取值,负号表示从右往左取值。当
步长
参数省略时,默认
步长
为1,即从左往右以增量1取值。
切取方向非常重要!切取方向非常重要!切取方向非常重要!”,重要的事情说三遍!
开始
索引值
:表示起始索引(
包含该索引本身
);该参数省略时,表示从对象“端点”开始取值,至于是从左往右还是从
右往左
开始,则由
步长
参数的正负决定,
步长
为正从
左往右
开始,为负从
右往左
开始。
结束
索引值
:表示终止索引(
不包含该索引本身
);该参数省略时,表示一直取到另外一个数据”端点“。
下面这两个代码的效果是等价的,从左第1位取到第3位,注意结束索引值为3,不代表就是取到第3位,而是对应第4位,但是结束的位置是不包含关系,所以就是取到第3位。
a = [1, 2, 3, 4, 5]a[0:3]
[1, 2, 3]
a[:3]
[1, 2, 3]
第二个:
增
Mr.林:
列表有一个append方法,可以往列表尾部增加一个数据元素。例如我们需要往列表a增加6这个数
。
a = [1, 2, 3, 4, 5]a.append(6)
[1, 2, 3, 4, 5, 6]
小白:
那我能一次增加多个值吗?
Mr.林:
当然可以,
使用extend方法,就可以往列表尾部添加数据元素。
a = [1, 2, 3, 4, 5]
a.extend([7, 8, 9, 10])
[1, 2, 3, 4, 5, 7, 8, 9, 10]
还可以直接使
用加号拼接即可
。
a = [1, 2, 3, 4, 5]a + [7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
小白:
只能在列表最后增加吗?可不可以在指定位置加?
Mr.林:
当然可以,使用insert方法,就可以往指定的索引值位置插入数据元素,例如我们需要往列表a的索引值为3,也就是第4位的位置插入一个10
。
a = [1, 2, 3, 4, 5]a.insert(3, 10)
[1, 2, 3, 10, 4, 5]
第三个:删
Mr.林:
可以使用 del 语句或pop方法进行删除列表的元素,例如我们需要删除索引值为3,也就是
第4位的位置上的值
。
a = [1, 2, 3, 4, 5]
del a[3]
[1, 2, 3, 5]
a.pop(3)
[1, 2, 3]
小白:
这是按索引位置删的,要是我不知道位置,只知道我要删什么值,该怎么办呢?
Mr.林:
可以使用remove方法删除指定的数据元素,
例如我们需要删除4这个数据元素
。
a = [1, 2, 3, 4, 5]
a.remove(4)
[1, 2, 3, 5]
第四个:改
Mr.林:
可以使用
变量名
[
索引值
] =更改值
的方式
进行更改,例如我们需要将索引值为3的值,
也就是
第4位的位置上的值改为 10
。
a = [1, 2, 3, 4, 5]
a[3] = 10
[1, 2, 3, 10, 5]
第五个:排序