数据容器——列表(list)学习总结
在python中,我们想要存储多份数据,一个便捷的方法就是使用数据容器。
列表(list)就是一种数据容器,它可以存储任意类型的数据,我们可以存储英文字母、数字、字符串等,甚至可以存储另一个列表。(一个列表可以存储不同类型的数据)
目录
1定义列表
2列表的常用操作(方法)
2.1访问列表元素
2.2查找列表中某元素的索引
2.3通过索引修改列表中的元素
2.4在列表中插入新元素
2.5删除列表中的元素
2.6统计列表中元素数量
3列表的循环遍历
1定义列表
列表由一系列按特定顺序排列的元素组成。python中用方括号([ ])表示列表,用逗号分隔其中的元素。
例1:下面我们尝试定义列表:
# 定义列表
list_1 = [666, "python"]
# 定义嵌套列表
list_2 = [[1, 2, 3], 666, list_1]
# 将其打印
print(list_1)
print(list_2)
输出结果如下:
[666, 'python']
[[1, 2, 3], 666, [666, 'python']]
可以看出,列表中的元素可以是数字、字符串、列表。
2列表的常用操作(方法)
2.1访问列表元素
列表中的元素是有序的,每个元素都有自己的序号(索引),所以我们可以通过索引访问列表中的元素。
访问的语法为:列表名[索引]
例2:下面使用索引将列表中的元素取出:
list_1 = [666, "python"]
print(list_1[0])
print(list_1[1])
list_2 = [[1, 2, 3], 666, list_1]
print(list_2[0])
print(list_2[1])
print(list_2[2])
输出结果如下:
666
python
[1, 2, 3]
666
[666, 'python']
要注意,第一个元素的索引为0;第二个元素的索引为1;以此类推,第n个元素的索引为n-1。
细心一点还可以发现,定义列表后,列表中的元素如果是字符串,通过列表名称打印列表后,得到的结果会含有单引号。但若通过索引访问该元素,再将其打印,输出结果中就不含单引号。
通过索引访问打印较之直接打印还有一个显而易见的特点,就是可以选择列表中的任意一个元素单独打印。
但对于一个有几十多个或者几百多个元素的列表,如果想要直接访问最后一个元素该怎么办呢?一种方法就是弄清楚这个列表中具体有多少个元素,然后再计算出最后一个元素的索引;还有一个好办法就是使用-1这个索引来访问最后一个元素。同样地,可以通过-2、-3访问倒数第二、第三个元素。
例3:比如像这样:
list_1 = [666, "python"]
list_2 = [[1, 2, 3], 666, list_1]
print(list_2[-1])
print(list_2[-2])
print(list_2[-3])
输出结果如下:
[666, 'python']
666
[1, 2, 3]
还有要注意的一点是,索引超出列表元素范围时,程序无法正确运行。
从例2的运行结果可以看出,list_2列表中,索引为0和2的两个元素的打印输出结果均为列表,但如果我们想单独访问这两个列表中的某一个元素(比如元素3)该怎么操作呢?这时就要再加上3在该列表中的索引。
例4:将list_2列表中的列表中的(读起来可能感觉怪怪的,但这个列表确实是嵌套了其他列表)元素3和python取出:
list_1 = [666, "python"]
list_2 = [[1, 2, 3], 666, list_1]
print(list_2[0][2])
print(list_2[2][1])
输出结果如下:
3
python
2.2查找列表中某元素的索引
我们可以通过索引来访问元素,也可以通过元素获取它的索引,这就需要使用index方法。但若列表中没有该元素,程序也无法正常运行。
index方法的语法是:列表.index(元素)
例5:通过元素,获取索引,将索引打印输出:
list_1 = [666, "python"]
print(list_1.index(666))
print(list_1.index('python'))
输出结果如下:
0
1
2.3通过索引修改列表中的元素
和某些其他数据容器不同,列表中的元素可以修改。
修改列表中元素的语法是:列表[索引]=另一个元素
例6:修改列表中的元素,并将其打印输出:
list_1 = [666, "python"]
list_1[0] = 888
print(list_1)
输出结果如下:
[888, 'python']
通过这种方法,我们就可以将列表中任意一个元素替换为另一个元素。
那我们可以不替换旧元素,直接在一个位置插入一个元素吗?答案是肯定的,继续往下看。
2.4在列表中插入新元素
我们可以在指定的索引位置插入元素,这要用到insert方法。
insert方法的语法是:列表.insert(索引, 元素)
例7:在列表中插入元素,并将其打印输出:
list_1 = [666, "python"]
list_1.insert(0, 888)
print(list_1)
print(list_1[0])
print(list_1[1])
输出结果如下:
[888, 666, 'python']
888
666
可以看出,888这一元素插到了索引为0的位置,原本索引为0的元素666的索引变成了1。
如果想直接将元素插入到尾部呢?一个办法就是搞清楚这个列表中有多少元素,再计算相应的索引并使用insert方法。还有一种方法就是使用append方法,这种方法可以直接将元素插到列表的尾部。
append方法的语法是:列表.append(元素)
例8:使用append方法将元素插入到列表尾部:
list_1 = [666, "python"]
list_1.append(888)
print(list_1)
输出结果如下:
[666, 'python', 888]
其实我们还可以直接在尾部加上一批元素,但是这批元素要放在另一个列表里面,这种方法就是extend方法。
extend方法的语法是:列表.extend(另一个列表)
例9:使用extend方法在列表尾部添加另一个列表中的元素:
list_1 = [666, "python"]
list_2 = [[1, 2, 3], 666, list_1]
list_2.extend(list_1)
print(list_2)
输出结果如下:
[[1, 2, 3], 666, [666, 'python'], 666, 'python']
要注意,我们并不是在列表尾部添加一个列表,而是添加了一批元素,一批在另一个列表中的元素。
2.5删除列表中的元素
列表不仅可以添加元素,还可以删除元素。
通过索引删除单个元素的方式有两种:
1:del 列表[索引]
2:列表.pop(索引)
例10:通过两种方式删除列表中的元素:
list_3 = [666, "python", 888, 666, 666]
list_4 = [[1, 2, 3], 666, [5, 6, 7]]
del list_3[3]
element = list_4.pop(1)
print(list_3)
print(list_4)
print(element)
输出结果如下:
[666, 'python', 888, 666]
[[1, 2, 3], [5, 6, 7]]
666
会发现使用pop方法可以将元素取出并且赋给另一个变量。
这里我们也能看出,列表中的元素是可以重复的,而有的数据容器中的元素是不可以重复的。
这时我们可以注意到,这两种方式都要使用索引才可以删除元素,那我们是不是还有办法可以不使用索引来删除元素呢?答案还是肯定的,我们还可以使用元素来删除元素,这就要用到remove方法了。
remove方法的语法是:列表.remove(元素)
这种方法可以将列表中第一个与该元素相同的元素删除。
例11:使用remove方法删除元素:
list_3 = [666, "python", 888, 666, 666]
list_3.remove(666)
print(list_3)
输出结果如下:
['python', 888, 666, 666]
可以看到,只有第一个666被删除了,后面的两个仍然保留。
如果想要删除列表中全部元素,我们除了使用以上方法一个一个删除外,还可以使用clear方法直接全部清除。
clear方法的语法是:列表.clear()
例12:使用clear方法清空列表中的元素:
list_3 = [666, "python", 888, 666, 666]
list_3.clear()
print(list_3)
输出结果如下:
[]
2.6统计列表中元素数量
在python中,我们可以使用count方法统计列表中某一个元素的数量,还可以使用len()函数来统计列表中共有多少元素。
count方法的语法:列表.count(元素)
len()函数的语法:len(列表)
例13:使用count方法和len函数分别统计列表中某一元素的数量和列表中全部元素的数量:
list_5 = [1, 1, 3, 5, 5, 5, 6]
count_1 = list_5.count(5)
count_2 = len(list_5)
print(count_1)
print(count_2)
输出结果如下:
3
7
可以看出,list_5列表中有3个元素5,共有7个元素。
3列表的循环遍历
例14:下面演示通过while循环和for循环遍历列表:
list_6 = [7, 5, 6, 3, 2]
i = 0
while i < len(list_6):
element = list_6[i]
print(element)
i += 1
for x in list_6:
print(x)
运行结果如下:
7
5
6
3
2
7
5
6
3
2
通过循环遍历,我们可以将列表中的元素依次取出。