定义
运算符
运算符 | 描述 | 支持的容器类型 |
---|---|---|
+ | 合并 | 字符串、列表、元组 |
* | 复制 | 字符串、列表、元组 |
in | 元素是否存在 | 字符串、列表、元组、字典 |
not in | 元素是否不存在 | 字符串、列表、元组、字典 |
+
(合并)
字典不支持合并。
# 定义形式
数据序列 + 数据序列 # 返回的是合并后的新数据序列
# 示例:
# 字符串
str1 = "aa"
str2 = "bb"
# 列表
list1 = [11, 22]
list2 = [33, 44]
# 元组
t1 = (55, 66)
t2 = (77, 88)
# 字典
dict1 = {"name": "Tom", "age": 20}
dict2 = {"sex": "男", "id": 110}
print(str1 + str2) # aabb
print(list1 + list2) # [11, 22, 33, 44]
print(t1 + t2) # (55, 66, 77, 88)
print(dict1 + dict2) # error
*
(复制)
字典不支持复制。
# 定义形式
# 数据序列 * 复制的次数 # 返回的是复制后的新数据序列
# 示例:
# 字符串
str1 = "aa"
# 列表
list1 = [11, 22]
# 元组
t1 = (55, 66)
print(str1 * 3) # aaaaaa
print(list1 * 3) # [11, 22, 11, 22, 11, 22]
print(t1 * 3) # (55, 66, 55, 66, 55, 66)
in
not in
公共方法
函数 | 描述 |
---|---|
len() | 计算容器中元素的个数 |
del或del() | 删除 |
max() | 返回容器中元素的最大值 |
min() | 返回容器中元素的最小值 |
range(start, end, step) | 生成从start到end的数字,步长为step,供for循环使用 |
enumerate() | 枚举函数。函数用于将一个可遍历的数据对象(如列表、元组或字符串),返回的数据是一个索引序列,数据形式是(下标,数据)的元组类型,一般用在for循环中。 |
len()
返回数据序列的长度。
len(数据序列) # 返回序列长度
del
或del()
删除目标数据序列。
del 目标数据序列
del(目标数据序列)
max()
和min()
返回数据序列的最大或最小值。
max(数据序列)
min(数据序列)
range()
# range()与切片的语法形式类似,end参数的数值同样不包含在内
# 步进为1
for i in range(1, 10, 1):
print(i, end="\t") # 1 2 3 4 5 6 7 8 9
print()
# 步进为2
for i in range(1, 10, 2):
print(i, end="\t") # 1 3 5 7 9
print()
# 省略开始和步进参数
for i in range(10):
print(i, end="\t") # 0 1 2 3 4 5 6 7 8 9
print()
enumerate()
# 语法形式
enumerate(可遍历对象,start)
其中,start为下标起始值,可选填,默认为0
# 示例:
list1 = ["a", "b", "c", "d"]
for i, j in enumerate(list1):
print((i, j), end="\t") # (0, 'a') (1, 'b') (2, 'c') (3, 'd')
print()
容器类型转换(强制数据类型转换)
list()
list1 = ["a", "b", "c", "d"]
tuple1 = (11, 22, 33, 44, 33)
set1 = {10, 20, 30, 40}
dict1 = {"name": "Rose", "age": 20}
print(list(tuple1)) # [11, 22, 33, 44, 33]
print(list(set1)) # [40, 10, 20, 30]
print(list(dict1)) # ['name', 'age']
tuple()
list1 = ["a", "b", "c", "d"]
tuple1 = (11, 22, 33, 44, 33)
set1 = {10, 20, 30, 40}
dict1 = {"name": "Rose", "age": 20}
print(tuple(list1)) # ('a', 'b', 'c', 'd')
print(tuple(set1)) # (40, 10, 20, 30)
print(tuple(dict1)) # ('name', 'age')
set()
list1 = ["a", "b", "c", "d"]
tuple1 = (11, 22, 33, 44, 33)
set1 = {10, 20, 30, 40}
dict1 = {"name": "Rose", "age": 20}
print(set(list1)) # {'d', 'b', 'c', 'a'}
print(set(tuple1)) # {33, 11, 44, 22}
print(set(dict1)) # {'age', 'name'}
推导式(生成式)
推导式定义形式
# 列表推导式
[xx for xx in range()]
# 字典推导式
{xx1: xx2 for ... in ...}
# 集合推导式
{xx for xx in ...}
列表推导式
用一个表达式创建一个有规律的列表或控制一个有规律的列表。推导式的作用是简化代码。
# 语法形式
list = [表达式返回值 表达式]
# 输出0-9的数字
# 常规for循环实现:
list1 = [] # 创建空列表
for i in range(10):
list1.append(i)
print(list1) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 列表推导式实现(等价于上述代码):
list2 = [i for i in range(10)] # 列表推导式
print(list2) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
带if的列表推导式
# 输出0-9的中的偶数数字
# 常规for循环实现:
list1 = [] # 创建空列表
for i in range(10):
if i % 2 == 0:
list1.append(i)
print(list1) # [0, 2, 4, 6, 8]
# 列表推导式实现(等价于上述代码):
list2 = [i for i in range(10) if i % 2 == 0] # 列表推导式
print(list2) # [0, 2, 4, 6, 8]
嵌套for的列表推导式
# 输出 (1, 0) (1, 1) (1, 2) (2, 0) (2, 1) (2, 2)的有规律元组
# 常规for循环实现:
list1 = []
for i in range(1, 3):
for j in range(3):
list1.append((i, j))
print(list1) # [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
# 推导式实现
list2 = [(i, j) for i in range(1, 3) for j in range(3)] # 推导式
print(list2) # [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
字典推导式
# 合并两个list为一个字典
list1 = ["name", "age", "gender"]
list2 = ["Tom", 20, "man"]
dict1 = {list1[i]: list2[i] for i in range(len(list1))} # len()获取的列表应以最短的,否则将报错
print(dict1) # {'name': 'Tom', 'age': 20, 'gender': 'man'}
# 提取字典中的目标数据(拆包处理)
counts = {"MBP": 268, "HP": 125, "DELL": 201, "lenovo": 199, "acer": 90}
count1 = {key: value for key, value in counts.items() if value >= 200}
print(count1) # {'MBP': 268, 'DELL': 201}
集合推导式
list1 = [1, 1, 2]
set1 = {i ** 2 for i in list1}
print(set1) # {1, 4}----集合去重