当前位置:首页>python>Python数据序列:字符串、列表、元组、字典、集合

Python数据序列:字符串、列表、元组、字典、集合

  • 2026-09-05 10:16:37
Python数据序列:字符串、列表、元组、字典、集合

数据序列(也常被称为 “序列类型”)是指按一定顺序排列、可通过索引访问 的数据集合。

  • 支持索引(正向从 0 开始,反向从 - 1 开始)
  • 支持切片(截取部分元素)
  • 支持遍历(for 循环遍历元素)
  • 支持拼接(+)和重复(*)操作

特性介绍:

类型
是否可变
是否有序
元素特性
索引方式
核心用途
字符串 (str)
不可变
有序
字符
数字索引
文本处理
列表 (list)
可变
有序
任意类型、可重复
数字索引
动态数据存储、增删改查
元组 (tuple)
不可变
有序
任意类型、可重复
数字索引
固定数据、哈希场景
字典 (dict)
可变
有序
键:不可变且唯一;值:任意
键索引
键值映射、快速查找
集合 (set)
可变
无序
不可变、唯一
无索引
去重、集合运算

1. 字符串(str)- 不可变的字符序列

  • 字符串是不可变的字符序列,用于存储文本数据,用单引号 ' ' 、双引号 " " 或三引号 ''' ''' / """ """ 定义。
  • 核心特性:有序、可索引、不可修改、可切片、支持拼接 / 重复。
  • 适用场景
    • 存储文本(如用户名、描述、文件内容);
    • 文本处理(如格式化输出、字符串拼接、正则匹配)。
# 1. 定义字符串s1 = "Hello"s2 = 'Python's3 = """多行字符串"""# 2. 索引与切片(序列通用)print(s1[0])      # 正向索引:输出 H(索引从0开始)print(s1[-1])     # 反向索引:输出 o(最后一个元素)print(s1[1:4])    # 切片:输出 ell(左闭右开,取1-3索引)print(s1[::-1])   # 反转:输出 olleH# 3. 常用方法(字符串专属)print(s1.upper()) # 转大写:HELLOprint(s1.replace("l", "x")) # 替换:Hexxoprint(s1.split("e")) # 分割:['H', 'llo']print(s1.startswith("He")) # 开头判断:Trueprint(s1.strip()) # 去除首尾空白(无空白则返回原字符串)# 4. 不可修改特性(以下代码报错)# s1[0] = 'h'  # TypeError: 'str' object does not support item assignment

2. 列表(list)- 可变的通用序列

  • 列表是 可变 的有序序列,可存储任意类型数据(数字、字符串、列表、字典等),用方括号 [] 定义,元素用逗号分隔。
  • 核心特性:有序、可索引、可修改、可切片、支持增删改查、动态扩容。
  • 适用场景
    • 存储动态变化的数据集(如用户列表、商品列表、爬虫结果);
    • 需要频繁增删改查的场景(如购物车、任务列表)。
# 1. 定义列表lst = [10, "apple", 3.14, True, [1,2]]  # 混合类型元素# 2. 索引/切片/修改print(lst[2])      # 输出 3.14lst[0] = 100# 修改元素:[100, 'apple', 3.14, True, [1,2]]print(lst[1:4])    # 切片:['apple', 3.14, True]# 3. 增删改查核心方法lst.append(6)      # 末尾添加:[100, 'apple', 3.14, True, [1,2], 6]lst.insert(1, "banana") # 指定位置插入:[100, 'banana', 'apple', 3.14, True, [1,2], 6]lst.remove("apple") # 删除指定元素:[100, 'banana', 3.14, True, [1,2], 6]lst.pop(2)         # 删除指定索引元素:[100, 'banana', True, [1,2], 6]del lst[3]         # 直接删除索引元素:[100, 'banana', True, 6]lst.clear()        # 清空列表:[]# 4. 其他常用操作lst = [3,1,2]lst.sort()         # 排序:[1,2,3]lst.reverse()      # 反转:[3,2,1]print(lst.index(2)) # 查找元素索引:1print(lst.count(3)) # 统计元素出现次数:1

3. 元组(tuple)- 不可变的通用序列

  • 元组是 不可变 的有序序列,可存储任意类型数据,用圆括号 () 定义(也可省略括号),元素用逗号分隔。
  • 核心特性:有序、可索引、可切片、不可修改、占用内存更小、可作为字典键 / 集合元素。
  • 适用场景
    • 存储固定不变的数据集(如坐标 (x,y) 、配置参数、函数返回多个值);
    • 需要哈希的场景(如作为字典的键、集合的元素);
    • 数据保护(防止意外修改)。
# 1. 定义元组t1 = (10, "apple", 3.14)  # 标准定义t2 = 20, "banana"# 省略括号(元组打包)t3 = (50,)                # 单个元素必须加逗号(否则视为普通数值)t4 = tuple([1,2,3])       # 从列表转换# 2. 索引/切片(仅读操作)print(t1[1])      # 输出 appleprint(t1[-2:])    # 切片:('apple', 3.14)# 3. 不可修改特性(以下代码报错)# t1[0] = 100  # TypeError: 'tuple' object does not support item assignment# 4. 常用操作print(len(t1))    # 长度:3print(3.14in t1) # 成员判断:Truet5 = t1 + t2      # 拼接:(10, 'apple', 3.14, 20, 'banana')print(t5 * 2)     # 重复:(10, 'apple', 3.14, 20, 'banana', 10, 'apple', 3.14, 20, 'banana')

4. 字典(dict)- 键值对的无序 / 有序集合

  • 字典是 可变 的键值对(key-value)集合,3.7 及以上版本默认按插入顺序保存,用大括号 {} 定义,键值对用:分隔,元素用逗号分隔。
  • 核心特性:
    • 键(key):必须是 不可变类型 (字符串、数字、元组),且唯一;
    • 值(value):可存储任意类型数据,可重复;
    • 支持快速查找(通过键找值,时间复杂度 O (1))。
  • 适用场景
    • 存储具有映射关系的数据(如用户信息、配置项、数据库记录);
    • 需要快速通过唯一标识(键)查找数据的场景(如缓存、索引)。
# 1. 定义字典user = {"name": "小明","age": 18,"gender": "男","hobbies": ["篮球", "游戏"]}# 2. 访问/修改值print(user["name"])    # 通过键访问:小明user["age"] = 19# 修改值:age变为19print(user.get("height", 175)) # 安全访问(无key返回默认值175)# 3. 增删改查核心方法user["address"] = "北京"# 添加键值对del user["gender"]       # 删除指定键值对user.pop("age")          # 删除并返回值:19user.update({"phone": "13800138000"}) # 批量更新/添加keys = user.keys()       # 获取所有键:dict_keys(['name', 'hobbies', 'address', 'phone'])values = user.values()   # 获取所有值:dict_values(['小明', ['篮球', '游戏'], '北京', '13800138000'])items = user.items()     # 获取所有键值对:dict_items([('name', '小明'), ...])# 4. 遍历字典for k, v in user.items():    print(f"{k}: {v}")

5. 集合(set)- 无序不重复的元素集合

  • 集合是 可变 的无序集合,元素唯一(自动去重),用大括号 {} 定义(空集合需用 set() ,而非 {} )。
  • 核心特性:
    • 元素必须是 不可变类型 (字符串、数字、元组);
    • 无序(无索引,不能通过索引访问);
    • 支持集合运算(交集、并集、差集)。
  • 适用场景
    • 去重(如列表去重 list(set(lst)) );
    • 集合运算(如查找共同好友、筛选唯一数据);
    • 快速成员判断(比列表更高效)。
# 1. 定义集合s1 = {1, 2, 3, 3, 4}  # 自动去重:{1,2,3,4}s2 = set([2, 4, 5, 6]) # 从列表转换:{2,4,5,6}s3 = set()             # 空集合(不能用{},{}是空字典)# 2. 增删操作s1.add(5)              # 添加元素:{1,2,3,4,5}s1.remove(3)           # 删除元素(元素不存在报错)s1.discard(10)         # 删除元素(元素不存在不报错)s1.pop()               # 随机删除一个元素(无序特性)s1.clear()             # 清空集合# 3. 集合运算(核心)s1 = {1,2,3,4}s2 = {3,4,5,6}print(s1 & s2)         # 交集:{3,4}print(s1 | s2)         # 并集:{1,2,3,4,5,6}print(s1 - s2)         # 差集:{1,2}(s1有s2无)print(s1 ^ s2)         # 对称差集:{1,2,5,6}(仅一方存在)

最新文章

随机文章