『无为则无心』Python序列 — 19、Python列表的其他操作(切片和遍历)
2021/7/5 22:48:48
本文主要是介绍『无为则无心』Python序列 — 19、Python列表的其他操作(切片和遍历),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- 1、通过切片对列表的操作
- (1)通过切片对列表进行修改
- (2)通过切片对列表进行删除
- (3)注意
- 2、列表的循环遍历
- (1)while循环遍历
- (2)for循环遍历
- 3、列表嵌套
- 4、综合示例
上一篇文章介绍了列表操作的常用API,本篇文章再说明一些列表(
List
)其他一些很常用的操作。
1、通过切片对列表的操作
注意:在给切片进行赋值时,只能使用序列赋值。
(1)通过切片对列表进行修改
""" 1、使用一个序列替换,一个列表的片段。 注意:不过替换序列的当度是多少, 都完全替换列表中的指定位置,前闭后开。 输出结果: 修改前: ['孙悟空', '猪八戒', '沙和尚', '唐僧'] 修改后: ['牛魔王', '红孩儿', '沙和尚', '唐僧'] """ stus = ['孙悟空','猪八戒','沙和尚','唐僧'] print("修改前:", stus) stus[0:2] = ['牛魔王','红孩儿'] # stus[0:2] = ['牛魔王','红孩儿','二郎神','白骨精'] # stus[0:2] = ['牛魔王'] print("修改后:", stus) """ 2、向列表中指定位置插入一个序列 输出结果: 修改前: ['孙悟空', '猪八戒', '沙和尚', '唐僧'] 修改后: ['牛魔王', '孙悟空', '猪八戒', '沙和尚', '唐僧'] """ # 向索引为0的位置插入元素 stus = ['孙悟空','猪八戒','沙和尚','唐僧'] print("修改前:", stus) stus[0:0] = ['牛魔王'] # stus[2:2] = ['牛魔王'] print("修改后:", stus) """ 3、当设置了步长时, 序列中元素的个数必须和切片中元素的个数一致。 输出结果: 修改前: ['孙悟空', '猪八戒', '沙和尚', '唐僧', '蜘蛛精', '白骨精'] 修改后: ['牛魔王', '猪八戒', '红孩儿', '唐僧', '二郎神', '白骨精'] """ stus = ['孙悟空','猪八戒','沙和尚','唐僧','蜘蛛精','白骨精'] print("修改前:", stus) stus[::2] = ['牛魔王','红孩儿','二郎神'] # stus[::2] = ['牛魔王','红孩儿'] # 报错 # stus[2::2] = ['牛魔王','红孩儿'] # 正常 print("修改后:", stus) """ 当stus[::2],表示全列表,每两步选一个元素, 列表一个有6个元素, 所以该切片一个有三个元素。 所以后边赋值三个元素的序列就能够成功。 当stus[::2],同理切片中元素是3, 你赋值两个元素的序列,不相等,就报错。 当stus[2::2], 切片中元素是2, 你赋值两个元素的序列,相等,则正常修改。 """
(2)通过切片对列表进行删除
""" # 在列表中删除切片中的元素 输出结果: 修改前: ['孙悟空', '猪八戒', '沙和尚', '唐僧'] 修改后: ['沙和尚', '唐僧'] 修改后: ['唐僧'] 修改后: ['唐僧'] """ stus = ['孙悟空','猪八戒','沙和尚','唐僧'] print("修改前:", stus) del stus[0:2] print("修改后:", stus) del stus[::2] print("修改后:", stus) stus[1:3] = []
(3)注意
以上操作,只适用于可变序列。
包括列表中学习的方法,只能支持可变序列。
2、列表的循环遍历
什么是遍历,就是安顺序依次访问到序列当中的每一个数据。换句话说遍历指的就是将列表中的所有元素一个一个的取出来。
需求:依次打印列表中的各个数据。
(1)while循环遍历
""" 输出结果: Tom Lily Rose """ name_list = ['Tom', 'Lily', 'Rose'] i = 0 while i < len(name_list): print(name_list[i]) i += 1 """ 如果遍历的下标越界,则会抛出异常, IndexError: list index out of range """ name_list = ['Tom', 'Lily', 'Rose'] i = 0 while i < len(name_list)+2: print(name_list[i]) i += 1
(2)for循环遍历
只要是序列,就都可以使用for循环遍历。
""" 输出结果: Tom Lily Rose """ name_list = ['Tom', 'Lily', 'Rose'] for i in name_list: print(i)
3、列表嵌套
所谓列表嵌套指的就是一个列表里面包含了其他的子列表。
应用场景:要存储班级一、二、三3个班级学生姓名,且每个班级的学生姓名在一个列表。
name_list = [['小明', '小红', '小绿'], ['Tom', 'Lily', 'Rose'], ['张三', '李四', '王五']]
思考: 如何查找到数据"李四"?
# 第一步:按下标查找到李四所在的班级列表 # 结果:['张三', '李四', '王五'] print(name_list[2]) # 第二步:从李四所在的班级列表里面,再按下标找到数据李四 # 结果:李四 print(name_list[2][1])
4、综合示例
需求:有三个办公室,8位老师,8位老师随机分配到3个办公室
""" 步骤: 1. 准备数据 1.1 8位老师 -- 列表 1.2 3个办公室 - 列表嵌套 2. 分配老师到办公室 随机分配,调用random函数 就是把老师的名字写入到办公室列表中, 换句话说就是向办公室列表追加老师名字。 3. 验证是否分配成功 打印办公室详细信息:每个办公室的人数和对应的老师名字。 """ import random # 1. 准备数据,老师和办公室 teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] offices = [[], [], []] # 2. 分配老师到办公室 # 遍历老师列表数据,取到的每个老师随机放到一个办公室列表。 for name in teachers: # 列表追加数据 -- append(选择) extend insert # num随机办公室号 num = random.randint(0, 2) offices[num].append(name) # 以上代码,老师已经分配完办公室,下面只是输出格式。 # 为了更贴合生活,把各个办公室子列表加一个办公室编号 1, 2, 3 i = 1 # 办公室编号 # 3. 验证是否分配成功 for office in offices: # 打印办公室人数 # 子列表数据的个数用len()获取 print(f'办公室{i}的人数是{len(office)},老师分别是:') # 打印每个办公室内老师的名字 for name in office: print(name) i += 1
这篇关于『无为则无心』Python序列 — 19、Python列表的其他操作(切片和遍历)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python