以下是 Python 组合数据类型 的完整笔记整理
第5章 组合数据类型
一、序列与索引
1. 序列概念
定义 :存储多个值的连续空间,每个值对应一个整数索引。索引方向 :
正向递增 :0, 1, 2, ..., N-1
反向递减 :-1, -2, ..., -N
2. 切片操作
3. 序列相加
同类型序列可通过 +
拼接:list1 = [ 1 , 2 ] + [ 3 , 4 ]
操作符/函数 描述说明 x in s
如果x
是s
的元素,结果为True
,否则结果为False
x not in s
如果x
不是s
的元素,结果为True
,否则结果为False
len(s)
序列s
中元素的个数(即序列的长度) max(s)
序列s
中元素的最大值 min(s)
序列s
中元素的最小值 s.index(x)
序列s
中第一次出现元素x
的位置 s.count(x)
序列s
中出现x
的总次数
二、列表(List)
1. 定义与特性
2. 常用操作
操作 操作方法 描述 添加元素 append(item)
在末尾添加元素 添加元素 insert(index, item)
在指定位置插入元素 删除元素 remove(item)
删除首个匹配项 删除元素 pop(index)
删除并返回指定位置元素 删除元素 clear()
清空列表 复制 lst.copy()
拷贝列表lst
中的所有元素,生成一个新的列表 反转 lst.reverse()
将列表lst
中的元素反转 排序 lst.sort(reverse = True)
原地降序排序 排序 sorted(lst)
返回新排序列表
3. 二维列表
三、元组(Tuple)
1. 定义与特性
2. 元组生成式
3. 元组 vs 列表
元组 列表 不可变序列 可变序列 无法实现添加、删除和修改元素等操作 可通过append()
、insert()
、remove()
、pop()
等方法实现添加和删除列表元素 支持切片访问元素,但不支持修改操作 支持切片访问和修改列表中的元素 访问和处理速度快 访问和处理速度慢 可以作为字典的键 不能作为字典的键
四、字典(Dict)
1. 定义与特性
键值对集合 ,键唯一且不可变(如字符串、数字)。创建方式 :
d1 = { "name" : "Alice" , "age" : 20 }
d2 = dict ( name= "Bob" , age= 25 )
d3 = dict ( zip ( [ "a" , "b" ] , [ 1 , 2 ] ) )
2. 常用操作
取值 :print ( d1[ "name" ] )
print ( d1. get( "gender" , "未知" ) )
遍历 :
for element in d. items( ) :
pass
for key, value in d. items( ) :
pass
生成式 :keys = [ "a" , "b" ]
values = [ 1 , 2 ]
d = { k: v for k, v in zip ( keys, values) }
方法 说明 d.keys()
获取所有的key
数据 d.values()
获取所有的value
数据 d.pop(key, default)
若key
存在则获取相应的value
,同时删除该key - value
对;否则获取默认值 d.popitem()
随机从字典中取出一个key - value
对,结果为元组类型,同时将该key - value
从字典中删除 d.clear()
清空字典中所有的key - value
对
五、集合(Set)
1. 定义与特性
2. 常用操作
集合的方法 描述说明 s.add(x)
如果x
不在集合s
中,则将x
添加到集合s
s.remove(x)
如果x
在集合中,将其删除;如果不在集合中,程序报错 s.clear()
清除集合中所有元素
六、Python 3.11新特性
结构模式匹配 (match-case
):data = [ 1 , 2 ]
match data:
case ( x, y) :
print ( f"元组: { x} , { y} " )
case _ :
print ( "未知类型" )
字典合并运算符 |
:d1 = { "a" : 1 } ; d2 = { "b" : 2 }
merged = d1 | d2
七、实战练习
1. 千年虫问题
years = [ 88 , 89 , 90 , 98 , 00 , 99 ]
fixed = [ ]
for y in years:
if y == 0 :
fixed. append( 2000 )
else :
fixed. append( 1900 + y)
print ( fixed)
2. 模拟京东购物
cart = [ ]
products = [ ]
for _ in range ( 5 ) :
info = input ( "输入商品ID和名称(如1001 手机): " ) . split( )
products. append( { "id" : info[ 0 ] , "name" : info[ 1 ] } )
print ( "商品列表:" )
for p in products:
print ( f" { p[ 'id' ] } { p[ 'name' ] } " )
while True :
choice = input ( "选择商品ID或输入q退出: " )
if choice == "q" :
break
product = next ( ( p for p in products if p[ "id" ] == choice) , None )
if product:
cart. insert( 0 , product)
else :
print ( "商品不存在!" )
print ( "购物车:" , [ p[ "name" ] for p in cart] )
总结对比
类型 可变性 有序性 语法 典型应用 列表 可变 有序 []
动态数据集合 元组 不可变 有序 ()
常量或保护数据 字典 可变 无序 {}
键值对映射 集合 可变 无序 {}
去重或集合运算