返回 Python
Python 2026-05-19

切片操作

容器中的元素按照特定顺序排列,可以通过索引访问对应元素,这样的容器类型称为序列类型, 包括 : 列表,字符串,元组

序列类型的协议 :  s = [1, 2, 3, 4, 5]

  1. 索引(从0开始,支持负数) s[0] # 1 s[-1] # 5(最后一个)
  2. 切片 start:stop:step s[1:4] # 2, 3, 4 s[::-1] # 5, 4, 3, 2, 1(反转)
  3. 成员检测 3 in s # True
  4. 长度与极值 len(s) # 5 min(s), max(s)
  5. 拼接与重复 s + 6, 7 # 1, 2, 3, 4, 5, 6, 7 s * 2 # 1, 2, 3, 4, 5, 1, 2, 3, 4, 5
  6. 迭代 for item in s:
    1. print(item)

切片操作: 不是”只有序列类型才满足以上特性,非序列类型一个特性都不满足”,有些非序列类型也满足一部分特性 切片操作范围前闭后开! 开始 : 结束 这个范围方向和步长方向需要保持一致! 正向切片的内容保持正向,反向切片的内容会被逆置

关于容器的附带方法,一般情况下,x.remove()是按照元素值删除,x.pop()方法是按照位置删除,不同的容器类型,其附带方法会有细微差异

对于Python 内置的可变容器的附带方法, 基本遵循如下返回规则: 纯修改 → None,删除东西 → 返回被删的,查改一体 → 返回查询结果


1.列表list 注意提供了两种索引 可以看作允许存放不同数据类型的”数组” 可以通过: del list[0]删除列表list的第一个元素

大多数方法返回None,不用使用对象接收结果,可以使用 is None/is not None来判断返回结果情况 注意! s.sort()默认升序

组包操作: 将一个一个独立的元素合并到一个数据容器中 解包操作: 将数据容器解开成一个一个独立的元素,使用 * 运算符,如: list=[*liist1 + *list2]

可以使用 + 运算符快速将两个列表合并

列表推导式: 按照一定的规则快速生成一个满足特定条件的列表,类似正则表达式, 如: list=[i**2 for i in range(1,21) if i%2==0] 推导式的内容可以理解为 :

  1. 数据在哪?
  2. 满足什么条件?
  3. 要怎么处理后再放置?

2.字符串str 注意字符串不支持修改操作! 字符串以子串为处理单位(子串既包含单个字符也包含多个字符的组合,适用范围更广)

因为字符串的不可变性,所以那些看似会更改内容的方法会返回一个新的字符串 s.split()会将切割后的结果以列表的形式返回


3.元组tuple 元组也为序列类型,支持切片操作 元组与列表唯一的区别就是不可修改! 因此元组可以视为可存放不同类型元素,不可修改的数组

注意单个元素的元组定义: t1=(100,)

组包和解包:

定义元组其实就是组包操作; 解包操作可以逐个变量一一对应的分配; 也可以使用 * 运算符来拓展解包,用于元素数量未知的情况; 此时可以把使用 * 运算符的接收对象看作一个空容器,先解包为”0个元素”,然后接受对应范围的元素,再组包为一个列表

python中便携的批量数据交换其实就是利用了元组的组包和解包操作, 如: b,c,a=a,b,c 右侧进行组包操作(定义元组),左侧进行一个基础解包操作


4.集合set 集合不属于序列,不支持索引访问 注意空集合定义方式只有s=set()一种,s={}定义的是空字典(字典是牢大,独占了d={}这种空字典定义方式,而留给空集的定义方式就只有s=set()了)

大多数方法返回None,不用使用对象接收结果 集合具有可修改性! s1.remove()方法会删除指定的元素 s1.pop()方法因为集合的无序性,会随机弹出一个元素,返回被弹出的元素

可以使用 & 符号求交集: s=s1&s2; 使用 | 符号求并集: s=s1|s2; 使用 - 求差集: s=s1-s2

集合推导式: 快速构建一个集合,与列表推导式类似 如: s={i for i in s1 if i not in s2}


5.字典dict 字典按照key来存取的,不是索引 字典可修改(就像随着时间变化,某些字词的含义要更新一样) 字典的key必须为不可变数据类型(如str,int,float.tuple等),不能重复; value可以为任意数据类型 如果重复,后值会覆盖前值

添加和修改的操作是一样的,系统会自动检测key : 如果key不存在,则添加,如果key存在,则修改

字典的常见遍历格式: for key,value in dict1.items(): print(f"key:{key}, value:{value}")