跳到主要内容
Python 基础:元组与列表详解 | 极客日志
Python 算法
Python 基础:元组与列表详解 综述由AI生成 Python 中列表和元组的基本概念、定义格式及常用操作。列表支持增删改查,可存储多种数据类型且可变;元组不可变,适用于存储固定数据。内容涵盖索引查找、切片、排序、嵌套使用等核心功能,并对比了两者在内存与修改权限上的区别,帮助初学者掌握序列类型的使用场景。文章还包含实际问题的代码解决方案,如列表去重及人员管理模拟。
DockerOne 发布于 2025/2/6 更新于 2026/6/5 25 浏览在开始前,我们先通过两个问题来引入主题:
办公室里有张三、李四、王五 3 个人,现在小宋也到办公室来上班了,如何用列表来表示?并输出办公室有哪些人。
过了一会,王五有事离开了办公室,程序应该如何表达?并输出办公室有哪些人。
此外,有一个列表 li1 = ["张三", "王五", "坤哥", "李四", "赵六", "坤哥", "王五", "坤哥", "张三", "坤哥"],将列表重复的数据删除,保留一个,不可以使用集合。你是否知道这个问题的答案了呢?接下来看完这节课就试着回头再来做一下吧。
元组与列表
列表的应用场景
**思考:**如果一个班级 100 位学生,每个人的姓名都要存储到变量,应该如何书写程序?声明 100 个变量吗?
**答:**列表即可,列表一次性可以存储多个数据。
列表的格式
li = [1 , 2 , 3 , 4 , "张三" , "李四" ]
列表可以一次性存储多个数据,且可以为不同数据类型。
列表的常用操作
列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。
查找
根据下标查找
name_list = ['张三' , '李四' , '王五' , '赵六' ]
print (name_list[0 ])
print (name_list[1 ])
print (name_list[2 ])
函数
**index():**返回指定数据所在位置的下标。
语法
name_list = ['张三' , '李四' , '王五' , '赵六' ]
print (name_list.index('张三' , 0 , 2 ))
注意:如果查找的数据不存在则报错。
**count():**统计指定数据在当前列表中出现的次数。
name_list = ['张三' , , , ]
(name_list.count( ))
'李四'
'王五'
'张三'
print
'张三'
**len():**访问列表长度,即列表中数据的个数。
name_list = ['张三' , '李四' , '王五' , '赵六' ]
print (len (name_list))
in 与 not in
**in:**判断指定数据在某个列表序列,如果在返回 True,否则返回 False。
**not in:**判断指定数据不在某个列表序列,如果不在返回 True,否则返回 False。
name_list = ['张三' , '李四' , '王五' , '赵六' ]
name = input ('请输入您要搜索的名字:' )
if name in name_list:
print (f'您输入的名字是{name} , 名字已经存在' )
else :
print (f'您输入的名字是{name} , 名字不存在' )
增加
函数
name_list = ['张三' , '李四' , '王五' , '赵六' ]
name_list.append('阿坤' )
print (name_list)
如果 append() 追加的数据是一个序列,则追加整个序列到列表。
name_list = ['张三' , '李四' , '王五' , '赵六' ]
alist = ["唱" , "跳" , "rap" , "篮球" ]
name_list.append(alist)
print (name_list)
list1 = ["张三" , "李四" , "王五" ]
print (id (list1))
list1.append("赵六" )
print (id (list1))
列表结尾追加数据,如果数据是一个序列,则将这个序列的数据逐一添加到列表。
name_list = ['张三' , '李四' , '王五' , '赵六' ]
name_list.extend('阿坤' )
print (name_list)
如果添加一个序列,则会将序列里面每一个元素添加进去。
name_list = ['张三' , '李四' , '王五' , '赵六' ]
alist = ["唱" , "跳" , "rap" , "篮球" ]
name_list.extend(alist)
print (name_list)
name_list = ['张三' , '李四' , '王五' , '赵六' ]
name_list.insert(1 , '阿坤' )
print (name_list)
删除 name_list = ['张三' , '李四' , '王五' , '赵六' ]
del name_list
print (name_list)
name_list = ['张三' , '李四' , '王五' , '赵六' ]
del name_list[1 ]
print (name_list)
删除指定下标的数据 (默认为最后一个),并返回该数据。
name_list = ['张三' , '李四' , '王五' , '赵六' ]
name_list.pop(1 )
print (name_list)
name_list = ['张三' , '李四' , '王五' , '赵六' ]
name_list.remove("张三" )
print (name_list)
name_list = ['张三' , '李四' , '王五' , '赵六' ]
name_list.clear()
print (name_list)
修改 name_list = ['张三' , '李四' , '王五' , '赵六' ]
name_list[0 ] = '阿坤'
print (name_list)
num_list = [1 , 5 , 2 , 3 , 6 , 8 ]
num_list.reverse()
print (num_list)
reverse 表示排序规则,reverse = True 降序,reverse = False 升序(默认)
li = [2 , 3 , 5 , 6 , 1 , 4 , 8 ]
li.sort(reverse=False )
print (li)
li.sort(reverse=True )
print (li)
复制 name_list = ['张三' , '李四' , '王五' , '赵六' ]
name_li2 = name_list.copy()
print (name_li2)
列表的循环遍历 name_list = ['张三' , '李四' , '王五' , '赵六' ]
for i in name_list:
print (i)
i = 0
name_list = ['Tom' , 'Lily' , 'Rose' ]
while i < len (name_list):
print (name_list[i])
i += 1
列表的嵌套
所谓列表嵌套指的就是一个列表里面包含了其他的子列表
name_list = [['张三' , '李四' , '阿坤' ], ['唱' , '跳' , '篮球' ], ['甲' , '乙' , '丙' ]]
print (name_list[1 ])
print (name_list[1 ][2 ])
元组
思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?
定义元组 定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型。
t1 = (10 , 20 , 30 )
t2 = (10 ,)
注意:如果定义的元组只有一个数据,那么这个数据后面也要添加逗号,否则数据类型为唯一的那个数据的数据类型。
元组的常见操作 tuple1 = ('aa' , 'bb' , 'cc' , 'bb' )
print (tuple1[0 ])
查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的 index 方法相同。
tuple1 = ('aa' , 'bb' , 'cc' , 'bb' )
print (tuple1.index('aa' ))
tuple1 = ('aa' , 'bb' , 'cc' , 'bb' )
print (tuple1.count('bb' ))
tuple1 = ('aa' , 'bb' , 'cc' , 'bb' )
print (len (tuple1))
但是如果元组里面有列表,修改列表里面的数据则是支持的。
tuple2 = (10 , 20 , ['aa' , 'bb' , 'cc' ], 50 , 30 )
print (tuple2[2 ])
tuple2[2 ][0 ] = 'aaaaa'
print (tuple2)
列表与元组的区别 特性 列表 (List) 元组 (Tuple) 定义符号 []()可变性 可变 (Mutable) 不可变 (Immutable) 性能 稍慢 稍快 用途 存储动态变化的数据 存储固定配置或常量
练习题解答 针对开头提出的去重问题,可以使用以下代码实现(不使用集合):
li1 = ["张三" , "王五" , "坤哥" , "李四" , "赵六" , "坤哥" , "王五" , "坤哥" , "张三" , "坤哥" ]
unique_li = []
for item in li1:
if item not in unique_li:
unique_li.append(item)
print (unique_li)
office = ["张三" , "李四" , "王五" ]
office.append("小宋" )
print (office)
office.remove("王五" )
print (office)
目录
元组与列表 列表的应用场景 列表的格式 列表的常用操作 查找 根据下标查找 函数 列表序列.index(数据,开始位置下标,结束位置下标) in 与 not in 增加 函数 列表序列.append(数据) ['张三', '李四', '王五', '赵六', ['唱', '跳', 'rap', '篮球']] 列表是可变的 修改之后,内存地址如果不变,那他就是 ['张三', '李四', '王五', '赵六', '阿', '坤'] 列表序列.insert(位置下标,数据) 结果:['张三','阿坤', '李四', '王五','赵六'] 删除 ['张三', '王五', '赵六'] ['张三', '王五', '赵六'] 列表序列.remove(数据) ['李四', '王五', '赵六'] [] 修改 [8, 6, 3, 2, 5, 1] 列表序列.sort(reverse=False) [1, 2, 3, 4, 5, 6, 8] [8, 6, 5, 4, 3, 2, 1] 复制 ['张三', '李四', '王五', '赵六'] 列表的循环遍历 列表的嵌套 找到篮球 第一步:按下标查找到篮球所在的列表 第二步:从李四所在的列表里面,再按下标找到数据李四 元组 定义元组 多个数据元组 单个数据元组 元组的常见操作 ['aa', 'bb', 'cc'] (10, 20, ['aaaaa', 'bb', 'cc'], 50, 30) 列表与元组的区别 练习题解答 小宋加入 王五离开 相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online