python数据序列-列表
一、列表及其应用场景
在Python中,我们把存储数据序列的数据类型称之为列表。但是在其他的编程语言中,如Java、PHP、Go等等中其被称之为数组。
1、列表的定义
1
|
列表序列名称 = [列表中的元素1, 列表中的元素2, 列表中的元素3, ...]
|
案例演示:定义一个列表,用于保存苹果、香蕉以及菠萝
1
2
3
4
5
|
list1 = ['apple', 'banana', 'pineapple']
# list列表类型支持直接打印
print(list1)
# 打印列表的数据类型
print(type(list1))
|
注意:列表可以一次存储多个数据且可以为不同的数据类型
2、列表的相关操作
列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:
增、删、改、查。
☆ 查操作
列表在计算机中的底层存储形式,列表和字符串一样,在计算机内存中都占用一段连续的内存地址,我们访问列表中的每个元素,都可以通过"索引下标"的方式进行获取。
![image-20210310170752234](/img/hugo/05-python_list/image-20210310170752234.png)
如果我们想获取列表中的某个元素,非常简单,直接使用索引下标:
1
2
3
|
list1 = ['apple', 'banana', 'pineapple']
# 获取列表中的banana
print(list1[1])
|
查操作的相关方法:
编号 |
函数 |
作用 |
1 |
index() |
指定数据所在位置的下标 |
2 |
count() |
统计指定数据在当前列表中出现的次数 |
3 |
in |
判断指定数据在某个列表序列,如果在返回True,否则返回False |
4 |
not in |
判断指定数据不在某个列表序列,如果不在返回True,否则返回False |
举个栗子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# 1、查找某个元素在列表中出现的位置(索引下标)
list1 = ['apple', 'banana', 'pineapple']
print(list1.index('apple')) # 0
# print(list1.index('peach')) # 报错
# 2、count()方法:统计元素在列表中出现的次数
list2 = ['刘备', '关羽', '张飞', '关羽', '赵云']
# 统计一下关羽这个元素在列表中出现的次数
print(list2.count('关羽'))
# 3、in方法和not in方法(黑名单系统)
list3 = ['192.168.1.15', '10.1.1.100', '172.35.46.128']
if '10.1.1.100' in list3:
print('黑名单IP,禁止访问')
else:
print('正常IP,访问站点信息')
|
☆ 增操作
编号 |
函数 |
作用 |
1 |
append() |
增加指定数据到列表中 |
2 |
extend() |
列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表 |
3 |
insert() |
指定位置新增数据 |
☆ append()
append() :在列表的尾部追加元素
1
2
3
4
5
|
names = ['孙悟空', '唐僧', '猪八戒']
# 在列表的尾部追加一个元素"沙僧"
names.append('沙僧')
# 打印列表
print(names)
|
注意:列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据。
☆ extend()方法
列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表
案例:
1
2
3
4
5
6
7
8
9
10
|
list1 = ['Tom', 'Rose', 'Jack']
# 1、使用extend方法追加元素"Jennify"
# list1.extend("Jennify")
# print(list1)
# 2、建议:使用extend方法两个列表进行合并
list2 = ['Hack', 'Jennify']
list1.extend(list2)
print(list1)
|
总结:extend方法比较适合于两个列表进行元素的合并操作
☆ insert()方法
作用:在指定的位置增加元素
1
2
3
4
|
names = ['薛宝钗', '林黛玉']
# 在薛宝钗和林黛玉之间,插入一个新元素"贾宝玉"
names.insert(1, '贾宝玉')
print(names)
|
☆ 删操作
编号 |
函数 |
作用 |
1 |
del 列表[索引] |
删除列表中的某个元素 |
2 |
pop() |
删除指定下标的数据(默认为最后一个),并返回该数据 |
3 |
remove() |
移除列表中某个数据的第一个匹配项。 |
4 |
clear() |
清空列表,删除列表中的所有元素,返回空列表。 |
☆ del删除指定的列表元素
基本语法:
1
2
3
4
5
|
names = ['Tom', 'Rose', 'Jack', 'Jennify']
# 删除Rose
del names[1]
# 打印列表
print(names)
|
☆ pop()方法
作用:删除指定下标的元素,如果不填写下标,默认删除最后一个。其返回结果:就是删除的这个元素
1
2
3
4
5
6
|
names = ['貂蝉', '吕布', '董卓']
del_name = names.pop()
# 或
# del_name = names.pop(1)
print(del_name)
print(names)
|
☆ remove()方法
作用:删除匹配的元素
1
2
3
|
fruit = ['apple', 'banana', 'pineapple']
fruit.remove('banana')
print(fruit)
|
☆ clear()方法
清空列表
1
2
3
4
5
|
names = ['貂蝉', '吕布', '董卓']
# 随着故事的发展,人物都game over
names.clear()
# 打印列表
print(names)
|
☆ 改操作
编号 |
函数 |
作用 |
1 |
列表[索引] = 修改后的值 |
修改列表中的某个元素 |
2 |
reverse() |
将数据序列进行倒叙排列 |
3 |
sort() |
对列表序列进行排序 |
4 |
copy() |
对列表序列进行拷贝 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
list1 = ['貂蝉', '大乔', '小乔', '八戒']
# 修改列表中的元素
list1[3] = '周瑜'
print(list1)
list2 = [1, 2, 3, 4, 5, 6]
list2.reverse()
print(list2)
list3 = [10, 50, 20, 30, 1]
list3.sort() # 升序(从小到大)
# 或
# list3.sort(reverse=True) # 降序(从大到小)
print(list3)
list4 = list3.copy()
print(list4)
|
3、列表的循环遍历
什么是循环遍历?答:循环遍历就是使用while或for循环对列表中的每个数据进行打印输出
while循环:
1
2
3
4
5
6
7
8
9
|
list1 = ['貂蝉', '大乔', '小乔']
# 定义计数器
i = 0
# 编写循环条件
while i < len(list1):
print(list1[i])
# 更新计数器
i += 1
|
for循环(比较推荐):
1
2
3
|
list1 = ['貂蝉', '大乔', '小乔']
for i in list1:
print(i)
|
4、列表的嵌套
列表的嵌套:列表中又有一个列表,这种情况就称之为列表嵌套
在其他编程语言中,称之为叫做二维数组或多维数组
应用场景:要存储班级一、二、三 => 三个班级学生姓名,且每个班级的学生姓名在一个列表。
1
2
3
4
5
6
7
8
9
10
11
12
|
classes = ['第一个班级','第二个班级','第三个班级']
一班:['张三', '李四']
二班:['王五', '赵六']
三班:['田七', '孙八']
把班级和学员信息合并在一起,组成一个嵌套列表
students = [['张三', '李四'],['王五', '赵六'],['田七', '孙八']]
students = [x,y,z]
students[0] == ['张三', '李四']
students[0][1]
|
嵌套后的列表访问
1
2
3
4
5
|
# 访问李四
print(students[0][1])
# 嵌套列表进行遍历,获取每个班级的学员信息
for i in students:
print(i) # 列表可以直接输出
|