目录
一.常见序列的特点
常见序列 | 语法 | 特点 | 常用函数 | 应用场景 |
字符串(str) | s = "hello" s = '''多行字符串 ''' | 不可变 可索引、可切片 可遍历 | replace():替换 split():切割 join():拼接 lower() upper():大小写转换 find() index():查找 title():单词首字母大写
isalpha() isdigit():判断
| 文本处理 格式化输出 正则匹配 |
列表(list) | lst = [1,2,3] lst = list(range(5)) | 可变 可索引、可切片 可嵌套 | append() extend() insert:添加元素 sort():排序 reverse():反转 remove() pop():删除 | 动态数据存储 需要修改的序列 栈或者队列 |
元组(tuple) | t = (1,2,3) t = tuple([1,2,3]) | 不可变 可索引、可切片 可哈希 | count():统计元素出现次数 index():查找 | 不可变数据 函数的对多个返回值 字典的键 |
字典(dict) | d = {"name": "Alice", "age": 25} d = dict(name="Alice", age=25) | 键值对储存 键唯一且不可变 | keys():返回所有键 values():返回所有值 items():返回键值对 字典名称[key] = value :修改或添加 update():合并 | 快速查找 JSON数据处理 缓存 |
集合(set) | s = {1, 2, 3} s = set([1, 2, 3]) | 无序不重复 可变 | add():添加元素 remove():删除元素 in not in :判断 update():合并 | 去重 成员快速判断 集合运算 |
二.常见序列的公共方法
+ | 合并 |
* | 复制(set和int类型不支持) |
in | 元素是否不存在 |
not in | 元素是否存在 |
max() | 返回最大值 |
min() | 返回最小值 |
len() | 查看序列元素个数 |
# 合并
str1 = "我爱"
str2 = "中国"
print(str1 + str2)
list1 = [1,2,3]
list2 = [4,5,6]
print(list1 + list2)
tuple1 = (1,2,3)
tuple2 = (4,5,6)
print(tuple1 + tuple2)
# 复制
# 1、字符串与乘号的关系
print('-' * 40)
print('小明爱吃麻辣烫')
print('-' * 40)
# 2、列表与乘号的关系
list1 = ['*']
print(list1 * 10)
# 3、元组与乘号的关系
tuple1 = (5, )
print(tuple1 * 10)
# in和not in
fruits = ['apple', 'banana', 'orange']
if 'apple' in fruits:
print("存在")
else:
print("不存在")
# max()和min()
nums = [1,2,3,5,8,6,9,4]
max_num = max(nums)
min_num = min(nums)
print(max_num)
print(min_num)
# len()
str1 = 'aaabbbccc'
length = len(str1)
print(length)
三.推导式
3.1推导式是什么
推导式是 Python 提供的一种简洁、高效的创建数据结构(如列表、字典、集合)的方式,可以替代传统的for循环
3.2列表推导式
列表推导式的基本语法:
变量名 = [表达式 for 变量 in 对象]
变量名 = [表达式 for 变量 in 对象 if 条件]
变量名 = [表达式 for 变量 in 对象 for 变量 in 对象]
可以帮你快速生成列表,并进行过滤。
示例:
(1)基本用法
# 生成 0~9 的平方列表
squares = [x**2 for x in range(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
(2)带条件过滤
# 只保留偶数
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
(3)嵌套循环
# 生成笛卡尔积(组合)
pairs = [(x, y) for x in [1, 2, 3] for y in ['a', 'b']]
print(pairs) # [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')]
3.3字典推导式
基本语法:
列表名 = {key: value for item in 对象 if 条件}
可以快速生成字典,并进行过滤或者转换。
示例:
(1)基本用法
# 将列表转为字典(元素作为键,平方作为值)
d = {x: x**2 for x in [1, 2, 3, 4]}
print(d) # {1: 1, 2: 4, 3: 9, 4: 16}
(2)条件过滤
# 只保留值大于 10 的项
scores = {'Alice': 85, 'Bob': 59, 'Charlie': 72}
passed = {k: v for k, v in scores.items() if v >= 60}
print(passed) # {'Alice': 85, 'Charlie': 72}
(3)键值对换
# 将键和值互换
original = {'a': 1, 'b': 2}
swapped = {v: k for k, v in original.items()}
print(swapped) # {1: 'a', 2: 'b'}
3.4集合推导式
基本语法:
集合名 = {表达式 for 变量 in 对象 for 条件}
可以快速生成集合并且可以自动去重。
示例:
(1)基本用法
# 生成 0~9 的平方集合(自动去重)
squares = {x**2 for x in [1, 2, 2, 3, 4]}
print(squares) # {1, 4, 9, 16}
(2)带条件过滤
# 只保留偶数
evens = {x for x in range(10) if x % 2 == 0}
print(evens) # {0, 2, 4, 6, 8}
3.5生成器推导式
基本语法:
(表达式 for 变量 in 对象 if 条件)
生成一个生成器,可以直接将生成器表达式用tuple()方法生成元组。
示例:
# 生成 0~9 的平方生成器(不立即计算)
squares_gen = (x**2 for x in range(10))
print(squares_gen) # <generator object <genexpr> at 0x7f8b1c2b4d60>
# 使用时才计算
for num in squares_gen:
print(num, end=" ") # 0 1 4 9 16 25 36 49 64 81
四.总结
推导式类型 | 语法 | 适用场景 |
---|---|---|
列表推导式 | 变量名 = [表达式 for 变量 in 对象 if 条件] | 生成列表 |
字典推导式 | 列表名 = {key: value for item in 对象 if 条件} | 生成字典 |
集合推导式 | 集合名 = {表达式 for 变量 in 对象 for 条件} | 生成集合(去重) |
生成器推导式 | 生成器推导式 = (表达式 for 变量 in 对象 if 条件) | 惰性计算(节省内存) |