1 列表常规操作
- 列表的应用场景
- 列表的格式
- 列表的常用操作
- 列表的循环遍历
- 列表的嵌套使用
1.1 列表的应用场景
思考: 有一个人的姓名(TOM)怎么书写存储程序?
答:变量。
思考:如果一个班级100位学生,每个人的姓名都要存储,应该如何书写程序? 声明100个变量吗
答: 列表即可,列表一次性可以存储多个数据
1.2 列表的格式
[数据1,数据2,数据3,数据4......]
列表可以一次性存储多个数据,且可以为不同数据类型
注意:在工作中需要将共同的数据类型存放在一个列表中,因为不同的数据类型操作是不一样的,所以我们为了后期方便控制都是存放一样的数据类型
1.3 列表的常用操作
1.3.1 函数
1.3.1.1 index()
index():返回指定数据所在位置的下标
1.语法:
列表序列.index(数据,开始位置下标,结束位置下标)
2.快速体验
name_list = ['Tom','Lily','Rose' ]
print(name_list.index('Lily',0,2)) # 1
[10:01:05 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
1
注意:查找数据不存在则报错,如下示例
name_list = ['tom','lily','rose']
# 可以看到在 name_list 列表中并没有 22 这个数据
print(name_list.index('22',0,2))
# 所以直接报错
[10:04:37 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
Traceback (most recent call last):
File "/root/py-demo/day-1/test.py", line 2, in <module>
print(name_list.index('22',0,2))
ValueError: '22' is not in list
1.3.1.2 count()
count():统计指定数据在当前列表中出现的次数
name_list = ['tom','lily','rose']
# 输出 1
print(name_list.count('tom'))
# tom 出现过一次所以输出 1
[10:07:12 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
1
1.3.1.3 len()
len():访问列表长度,即列表中数据的个数
name_list = ['tom','lily','rose']
# 将 name_list 列表的长度输出
print(len(name_list))
# 因为在 name_list 中只有 3 个 index ,所以长度为 3
[10:10:49 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
3
1.3.2 判断是否存在
in: 判断指定数据在某个列表序列,如果在返回True,否则返回False
name_list = ["tom","lisi",'zhangsan']
# true
print('tom' in name_list)
# name_list 不包含 11 返回 false
print('11' in name_list)
not in:判断指定数据不在某个列表序列,如果不在返回True,否则返回False
name_list = ["tom","lisi",'zhangsan']
# name_list 包含 tom 所以返回 false
print('tom' not in name_list)
# name_list 不包含 11 返回 true
print('11' not in name_list)
[10:25:18 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
False
True
体验案例:
需求: 查找用户输入的名字是否已经存在
name_list = ["tom","lisi",'zhangsan']
name = input('请输入您要搜索的名字:')
if name in name_list :
print(f'您输入的名字是{name},名字已经存在')
else:
print(f'您输入的名字{name},名字不存在')
[14:29:55 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
请输入您要搜索的名字:12
您输入的名字12,名字不存在
[14:30:04 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
请输入您要搜索的名字:tom
您输入的名字是tom,名字已经存在
1.4 列表嵌套
所谓列表嵌套指的就是一个列表里面包含了其他的子列表
应用场景:要存储班级一、二、三。三个班级学生姓名,且每个班级的学生姓名在一个列表。
# 在下面的 name_list 中每个嵌套的列表就表示一个班级
name_list = [['小明’,'小红','小绿'],['Tom',"Lily','Rose'],["张三','李四
王五']]
name_list = [['tom','baoluo','erdong'],['11','22','33'],['zhangsan','lishi','wangmazi']]
# 拿到班级一
print(name_list[0])
# 单独拿出 baoluo
print(name_list[0][1])
[14:51:15 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['tom', 'baoluo', 'erdong']
baoluo
2 函数增加操作
2.5 append 追加操作
作用:增加指定数据到列表中。
- append():列表结尾追加数据。
1、语法
列表序列.append(数据)
2、体验
name_list = ['tom','lily','rose']
# 通过 append 追加 xiaomi
name_list.append('xiaomi')
print(name_list)
[15:16:27 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['tom', 'lily', 'rose', 'xiaomi']
可以在后面追加一个列表。
name_list = ['tom','lily','rose']
# 这里将 [11,22] 追加到 name_list 中
name_list.append([11,22])
print(name_list)
[16:12:40 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['tom', 'lily', 'rose', [11, 22]]
注意:
- 列表数据可改的,列表可变类型
- append 函数追加数据的时候如果数据是一个序列,追加整个序列到结尾
- 列表追加数据的时候,直接在原列表里面追加了指定数据,即修改了原列表,故列表为可变类型数据。
2.6 extend() 逐一追加
extend()
:列表结尾追加数据,如果数据是一个序列,则将这个序列的数据拆开逐一添加到列表
1、语法:
列表序列.extend(数据)
2、快速体验
name_list = ['tom','lily','rose']
# 通过 extend 函数将 xiaomi 追加
name_list.extend('xiaomi')
print(name_list)
可以看到这里已经将 xiaomi
拆开追加到了 name_list
后面
[16:12:41 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['tom', 'lily', 'rose', 'x', 'i', 'a', 'o', 'm', 'i']
可以在后面追加一个列表。但是会将新追加的列表进行拆分
1、快速上手
name_list = ['tom','lily','rose']
# 这里将 [111,22] 追加至 name_list 后面
name_list.extend([111,22])
print(name_list)
# 将 [111,22] 拆开并将每个数据逐一追加至 name_list 中
print(len(name_list))
可以看到 [111,22]
已经被拆分
[16:18:30 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['tom', 'lily', 'rose', 111, 22]
5
注意:
extend()
追加数据是一个序列,把数据序列里面的数据拆开然后逐一追加到列表的结尾
2.7 insert() 插入数据
insert():指定位置新增数据,可以在列表的任意位置添加
1、语法
列表序列.insert(位置下标,数据)
2、快速体验
name_list = ['tom','lily','rose']
# ['tom','lily','hahaha','rose'],这里是将 haha 插入到下标为 2 的位置
name_list.insert(2,"hahaha")
# ['xixi','tom','lily','hahaha','rose']
name_list.insert(0,"xixi")
print(name_list)
[16:23:11 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['xixi', 'tom', 'lily', 'hahaha', 'rose']
3 删除操作
3.1 del
1、语法
del 目标
2、快速体验
name_list = ['tom','lily','rose']
del name_list
# 输出:'name_list' is not defined 提示找不到了
# 因为我们在第二行代码已经将 name_list 删除
print(name_list)
[16:23:22 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
Traceback (most recent call last):
File "/root/py-demo/day-1/test.py", line 4, in <module>
print(name_list)
NameError: name 'name_list' is not defined
3、指定删除下标数据
name_list = ['tom','lily','rose']
# 指定删除下标为 0 的数据
del name_list[0]
print(name_list)
[16:36:18 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['lily', 'rose']
3.2 pop
删除指定下标的数据,如果不指定下标,默认删除最后一个数据,无论是按照下标还是删除最后一个,pop函数都会返回这个被删除的数据
name_list = ['tom','lily','rose']
del_name = name_list.pop()
# 删除的数据
print(del_name)
# 原列表
print(name_list)
# 将 rose 删除,并且返回原列表的数据中只有 'tom', 'lily'
[16:40:23 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
rose
['tom', 'lily']
指定下标删除
name_list = ['tom','lily','rose']
# 指定删除下标为 1
del_name = name_list.pop(1)
# 删除的数据
print(del_name)
# 原列表
print(name_list)
# lily 已经被删除,现在的 name_list 只有'tom', 'rose'
[16:41:38 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
lily
['tom', 'rose']
3.3 remove
remove()
: 移除列表中某介数据的第一个匹配项
1、语法
数据.remove(删除数据)
2、操作
name_list = ['tom','lily','rose']
# 指定删除 tom
name_list.remove('tom')
print(name_list)
# 可以看到 tom 已经删除
[16:43:40 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['lily', 'rose']
3.4 clear() 清空列表
clear() 清空列表
name_list = ['tom','lily','rose']
# 调用 clear 函数
name_list.clear()
print(name_list)
# 可以看到 name_list 数据已经被清空
[16:43:54 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
[]
4 修改操作
4.1 修改指定下标
- 修改指定下标数据
name_list = ['tom','lily','rose']
# 指定修改下标为 0
name_list[0] = 'aaa'
print(name_list)
[09:51:32 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['aaa', 'lily', 'rose']
4.2 reverse() 逆向排序
reverse():逆向排序
name_list = ['1','2','7','8','3','4','9','5','6']
name_list.reverse()
print(name_list)
# 可以看到将列表中的数据反过来排序
[10:09:45 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['6', '5', '9', '4', '3', '8', '7', '2', '1']
4.3 sort():排序
sort():排序
1、语法
列表序列.sort(key=None,reverse=False)
注意: reverse表示排序规则,reverse = True 降序, reverse = False 升序 (默认)
name_list = ['1','2','7','8','3','4','9','5','6']
# 默认为升序
name_list.sort()
print(name_list)
# 降序
name_list.sort(key=None,reverse=True)
print(name_list)
[10:16:18 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
['1', '2', '3', '4', '5', '6', '7', '8', '9']
['9', '8', '7', '6', '5', '4', '3', '2', '1']
5 复制
5.1 copy 函数
name_list = ['tom','lily','rose']
name_list2 = name_list.copy()
print('name_list2:',name_list2)
[11:07:37 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
name_list2: ['tom', 'lily', 'rose']
6 列表的循环遍历
需求: 依次打印列表中的各个数据。
6.1 while
- 代码
'''
1.准备表示下标数据
2.循环 while
条件 i < 3 len()
遍历:依次按顺序访问到序列的每一个数据
i += 1
'''
name_list = ['tom','lily','rose']
i = 0
# 通过 len 函数获取 name_list 长度进行遍历
while i < len(name_list):
print(name_list[i])
i+=1
# 输出
[14:14:04 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
tom
lily
rose
6.2 for
注意:
一般在工作中涉及到列表循环遍历的话就需要采用 for 循环
name_list = ['tom','lily','rose']
# 通过 for 循环将 name_list 的数据赋值给 i ,然后由 print 输出
for i in name_list:
print(i)
# 输出
[14:17:21 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
tom
lily
rose
7 列表嵌套
所谓列表嵌套指的就是一个列表里面包含了其他的子列表
应用场景: 要存储班级一、二、三 三个班级学生姓名,且每个班级的学生姓名在一个列表。
name_list = [['小明','小虎','小马'],['大黑','大狗','大任'],['中间','中观','中海']]
print(name_list)
# 指定输出下标为 0 内嵌下标为 2 的数据:小马
print(name_list[0][2])
# 输出
[14:26:51 root@dev py-demo]#/bin/python3 /root/py-demo/day-1/test.py
[['小明', '小虎', '小马'], ['大黑', '大狗', '大任'], ['中间', '中观', '中海']]
小马
8 总结
- 列表的格式
[数据1,数据2,数据3]
- 常用操作方法
- index()
- len()
- append()
- pop()
- remove()
- 列表嵌套