Python核心数据类型深度解析:列表、元组、序列操作与集合应用实战指南
本文深入解析Python核心数据类型中的列表、元组、序列操作及集合应用。列表详解增删改查与深浅拷贝机制,元组强调不可变性及高效访问,序列通用函数涵盖排序、反转、打包映射等高级操作,集合突出去重与元素管理。通过代码实战与函数对比,助您掌握数据操作核心技巧,提升开发效率。
目录
- 前言
- 一、数据类型-列表
- 1.1列表的加法和乘法
- 1.2 列表相关函数
- 1.2.1 列表元素的增加
- 1.2.2 列表元素的删除
- 1.2.3 列表元素的修改
- 1.2.4 元素的查询
- 1.2.4 其它函数
- 1.2.5 列表可以嵌套并且访问
- 二、深拷贝和浅拷贝
- 二、数据类型-元组
- 2.1 元组的访问
- 2.1.1 下标访问
- 2.1.2 切片访问
- 2.2 元祖的加法和乘法
- 2.3 元祖的函数
- 三、字符串、列表、元祖的共同点
- 四、序列的操作
- 4.1 sum
- 4.2 sorted
- 4.3 reversed
- 3.4 all和any
- 3.5 zip
- 3.6 map
- 3.7 enumerate
- 3.8 filter
- 五、集合
- 5.1 去重
- 5.2 可变集合
- 5.3 可变集合的增加
- 5.4 可变集合的删除
- 5.5 创建一个空集合
- 总结
前言
书接上文
一、数据类型-列表
字符串不可以修改,但是列表可以
1.1列表的加法和乘法
| + |
两个列表拼接
|
| * | 复制多少次 |
list1 = [1, 3, 5]
list2 = [2, 4, 6]
print(list1 + list2)
print(list1 * 3)
1.2 列表相关函数
1.2.1 列表元素的增加
| append | 尾部增加 |
| insert | 指定位置增加 |
| extend | 把一个列表的所有元素添加到当前的列表 |
lst1 = [1,2,3,4,5]
lst2 = [6,7,8,9,10]
lst1.append(10)
print(lst1)
lst1.insert(1,11)
print(lst1)
lst1.extend(lst2)
print(lst1)

1.2.2 列表元素的删除
| remove | 删除指定元素 |
| pop | 指定下标删除(不指定默认删除最后一个) |
| clear | 删除列表中的所有元素 |
| del关键字 | 删除整个列表 |
lst1 = [1,2,3,4,5,3]
lst1.remove(3) # 删除从左往右第一个3这个元素
print(lst1)
lst1.pop(0) # 删除位置0的元素,位置是从0开始数的 如果不指定坐标默认删除最后一个
print(lst1)
lst1.clear()# 清空列表的所有内容,所以返回一个空的
print(lst1)
del lst1
# print(lst1) lst3列表已经被删除,无法运行会报错

1.2.3 列表元素的修改
用下标或者切片的方式修改列表中的单个或多个元素
列表名[下标] = 新的元素内容
lst1 = [1,2,3,4,5,3]
lst1[0] = 2
print(lst1)
lst2 = [1,2,3,4,5,3]
lst2[0:6] = 3, 4, 5, 6, 7, 8 # 含左不含右
print(lst2)
lst3 = [1,2,3,4,5,3]
lst3[0:5] = 3, 4, 5, 6, 7, 8 # 此处应当注意在区间内的是修改,超出区间的会强行增加
print(lst3)
1.2.4 元素的查询
| count() |
返回列表 中 某元素 出现 的 次数
|
|
in 关键字
|
如果存在 返回 T rue , 否则 返回 F alse
|
| not in |
如果不存在 返回 T rue , 否则 返回 F alse
|
list5 = [11, 33, 55, 77, 55]
print(list5.count(55))
if 33 in list5:
print("yes")
print(list5)

1.2.4 其它函数
| len | 列表的元素个数 |
|
rev e r s e
|
反转列表元素 |
|
so r t
|
排序 |
| copy | 拷贝 |
list5 = [1,5,2,3,5,4,5,2,1,3]
a = len(list5)
print(a)
list5.reverse()
print(list5) #默认从小到大排序
list5.sort()
print(list5)
list5.sort(reverse = True) #从大到小排序
print(list5)
l1 = ["aba","cbcf","babdssdd","dd"]
l1.sort() #按首字母的ASCII值排序
print(l1)
l1.sort(key=len) #可以通过key指定排序方法,这里用的字符串长度
print(l1)
l2 = l1.copy()
print(l2)

1.2.5 列表可以嵌套并且访问
访问时,先指定外层元素的下标,从而访问到内层列表的元素;嵌套多少层列表,就需要指定多少层下标
l3 = [2, [33, 55], "fan"]
print(l3)
print(l3[1][1])

二、深拷贝和浅拷贝
浅拷贝创建了一个新对象,和原始对象的内容相同,但是其内部的可变元素是对原始对象中可变元素的引用,并不是新的独立对象。
深拷贝创建了一个新对象,其内部所有元素都是原始对象的副本。
浅拷贝在实际编程中更常见,更高效。
import copy
l1 = [[1,2,3], 88, "hello"]
l2 = l1.copy() #浅拷贝,跟随拷贝源的可变项变换
l3 = copy.deepcopy(l1) #深拷贝
print(l1)
print(l2)
print(l3)
l1[0][1] = 9
print(l1)
print(l2)
print(l3)

二、数据类型-元组
由()包裹,元祖不可修改
元组名 = (元素1,元素2, 元素3......)
t1 = (1, 3, 5)
print(t1)
print(type(t1))

2.1 元组的访问
按照从左向右访问时,下标从0开始;
从右向左访问,下标从-1开始
2.1.1 下标访问
t1 = (1, 3, 5)
print(t1[0])
print(t1[-1])
![]()
2.1.2 切片访问
元组名[开始:结束:步长]
访问时,包括起始位置不包括终止位置,且步长默认为1;如果没有给起始值,默认为元组开始位置,如果没有给终止值,默认为元组结束位置,此时访问包括终止位置
t1 = (1, 3, 5, 7, 9)
print(t1[::])
print(t1[::-1])
print(t1[0:2:])
print(t1[2:])
print(t1[-1:-3:-1])

2.2 元祖的加法和乘法
| + | 两个元祖拼接 |
| * | 元祖复制多少次 |
t1 = (1, 3, 5, 7, 9)
t2 = (2, 4, 8, 10)
print(t1 + t2)
print(t2 * 3)

2.3 元祖的函数
| len | 计算元组中元素的个数 |
| max | 返回元组中的最大值 |
| min | 返回元组中的最小值 |
| in | 查找是否存在某元素,是打印true,否打印false |
| not in | |
| del | 删除元祖 |
t1 = (1, 3, 5, 7, 9)
print(len(t1))
print(max(t1))
print(min(t1))
print(3 in t1)
del t1
#print(t1) 因为del了,运行会报错

三、字符串、列表、元祖的共同点
都可以通过下标访问每一个元素
下标从左向右从0开始,从右向左从-1开始
共同的名字:序列
可变序列:列表
不可变序列:字符串、元祖
四、序列的操作
| max,min | 找出序列中的最大值、最小值 |
| len | 计算长度或元素个数 |
| sum | 求和 |
| sorted | 排序 |
| reversed | 序列反转 |
| all | 序列中每个元素是否都为真(是否有0和空格) |
| any | 系列中任意元素是否为真(全为0或者空才是False) |
| zip | 打包,把多个序列中对应位置的元素打包成一个元组 |
| map | 让序列内的每一个元素实现某种功能 |
| enumerate | 枚举 |
| filter | 过滤一遍每个元素 |
4.1 sum
t1 = (1, 3, 5, 7, 9)
print(sum(t1))
print(sum(t1, start=30)) #30加上求的和
![]()
4.2 sorted
sorted(序列名,key,reverse) 排序
t1 = (1, 10, 5, 12, 9)
print(sorted(t1, reverse = True))
![]()
4.3 reversed
reversed( ):序列反转,返回一个迭代器,需要强转或for遍历
t1 = (1, 10, 5, 12, 9) for i in reversed(t1): print(i, end=" ") print() print(tuple(reversed(t1)))

3.4 all和any
all 和 any
t1 = (1, 10, 5, 12, 9)
print(all(t1))
t2 = (0, 10, 5, 12, 9)
print(all(t2))
print(any(t2))
print(any(t1))
t3 = ()
t4 = (0,0,0,0)
print(any(t3))
print(any(t4))

3.5 zip
zip
把多个序列中对应位置的元素打包成一个元组,返回一个迭代器
元素个数不同的时候,以最少的为主
l1 = [1,2,3]
l2 = [2,2,2,24,52,62,27,28,29]
l3 = [31,32,33,34,35,36,337,38,39]
print(list(zip(l1,l2,l3)))
![]()
3.6 map
map(序列,功能)
序列中每个元素指定一个函数,返回迭代器
t1 = ("aaaa","dhfulads","hdfafhfuol")
print(tuple(map(len,t1)))
![]()
3.7 enumerate
枚举
把序列中的下标和元素以元组的形式组合,返回迭代器
t1 = ("aaaa","dhfulads","hdfafhfuol")
print(tuple(enumerate(t1)))
![]()
3.8 filter
filter
根据提供的函数对序列中的每个元素进行计算,把结果为True的元素以迭代器的形式返回

五、集合
由{ }包裹,无序的不重复的,分为可变集合和不可变集合。
可变集合内元素定义好之后不可修改,但是集合可以增加元素或者删除元素
元素的数据类型只能是数字、字符串、元祖
5.1 去重
# 去重
l1 = [2, 3, 2, 3, 2]
print(set(l1))
![]()
5.2 可变集合
集合名 = {元素1,元素2,元素3...... }
s1 = {1998, "emm", (11, 22), "fan"}
print(s1)
print(type(s1))

5.3 可变集合的增加
add() 添加一个元素
update() 添加多个元素值
s1 = {1998, "emm", (11, 22), "fan"}
s1.add("aaa")
print(s1)
s1.update({"aaa",(88, 99)})
print(s1)
s1.update("ab",(66, 77))
print(s1)

5.4 可变集合的删除
remove( ): 删除指定元素
discard():删除指定元素
pop():删除第一个
l1 = {12, 16, 18, 20}
l1.remove(12)
print(l1)
l2 = {12, 16, 18, 20}
l2.discard(12)
print(l2)
l3 = {12, 16, 18, 20}
l3.pop()
print(l3)

5.5 创建一个空集合
s3 = {}
print(type(s3))
s4 = set()
print(type(s4))

总结
本文系统详解Python中列表、元组、序列通用操作及集合的核心用法。列表作为可变序列,支持增删改查操作,涵盖append、insert、extend等元素添加方法,remove、pop、clear等删除函数,以及切片修改、count统计等技巧,并通过深浅拷贝对比揭示数据引用差异。元组作为不可变序列,重点解析下标访问、切片操作及拼接特性,强调其适用于固定数据场景的优势。序列通用操作部分整合max、min、sum、sorted、zip、map等函数,结合enumerate索引枚举与filter过滤实现高效数据处理。集合部分聚焦去重功能,讲解可变集合的增删(add/update/discard)及空集合创建注意事项,通过对比列表、元组与集合的特性,帮助开发者根据需求选择合适的数据结构。全文通过代码示例与函数解析,提供从基础操作到进阶应用的完整知识体系。
更多推荐


所有评论(0)