python——推导式与公共操作

106 阅读4分钟

公共操作

运算符

运算符描述支持的容器类型
+合并字符串,列表,元组
*复制字符串,列表,元组
in是否存在字符串,列表,元组,字典,集合
not in是否不存在字符串,列表,元组,字典,集合

"+" :合并

# 字符串
a = "abc"
b = "abc"
c = a + b
print(c)
# 列表
list1 = ["张三", "李四"]
list2 = ["王五", "赵六"]
list3 = list1 + list2
print(list3)
# 元组
tup1 = ("张三", "李四")
tup2 = ("王五", "赵六")
tup3 = tup1 + tup2
print(tup3)

" * " :复制

# 字符串
var1 = "abc"
print(var1 * 10)
# 列表
list1 = ["hello"]
print(list1 * 10)
# 元组
tup1 = ("hello",)
print(tup1 * 10)

in 和 not in

# 字符串
var1 = "abc"
print("a" in var1)
print("a" not in var1)
# 列表
list1 = ["a", "b", "c"]
print("a" in list1)
print("a" not in list1)
# 元组
tup1 = ("a", "b", "c")
print("a" in tup1)
print("a" not in tup1)
# 集合
set1 = {"a", "b", "c"}
print("a" in set1)
print("a" not in set1)
# 字典
dict1 = {"name": "张三", "age": 18}
print("name" in dict1)
print("name" not in dict1)
print("张三" in dict1.values())
print("张三" not in dict1.values())

公共方法

函数描述
len()计算容器中元素个数
del 或 del()删除
max()返回容器中元素最⼤值
min()返回容器中元素最⼩值
range(start,end, step)⽣成从start到end的数字,步⻓为 step,供for循环使⽤
enumerate()函数⽤于将⼀个可遍历的数据对象(如列表、元组或字符串)组合为⼀个索引序列,同时列出数据和数据下标,⼀般⽤在 for 循环当中。
sum()序列求和
zip()合并系列
var1 = "abc"
list1 = ["a", "b", "c"]
tup1 = ("a", "b", "c")
set1 = {"a", "b", "c"}
dict1 = {"name": "张三", "age": 18}

# len(): 统计元素个数
print(len(var1))
print(len(list1))
print(len(tup1))
print(len(set1))
print(len(dict1))

# del 或 del()删除
# del var1
# del list1
# del set1
# del tup1
# del dict1

# max():取最大值
var1 = "1234"
list1 = [1, 2, 3, 4]
tup1 = (1, 2, 3, 4)
set1 = {1, 2, 3, 4}
print(max(var1))
print(max(list1))
print(max(tup1))
print(max(set1))

# min取最小值
print(min(var1))
print(min(list1))
print(min(tup1))
print(min(set1))

# sum():求和
print(sum(list1))
print(sum(tup1))
print(sum(set1))

# enumerate()
# 语法:enumerate(可遍历对象, start=0)
注:start参数⽤来设置遍历数据的下标的起始值,默认为0
list1 = [1, 2, 3, "张三", "李四"]
for i in enumerate(list1):
    print(i)

for index, data in enumerate(list1):
    print(f"下标是{index}, 对应的字符是{data}")
    
# zip()
list1 = ["name","age","sex"]
list2 = ["张三","18","男"]
list3=zip(list1,list2)
print(list3)   
# >>> <zip object at 0x00000260240B5D80> 返回的是生成器对象
print(dict(list3))  
# >>>{'name': '张三', 'age': '18', 'sex': '男'}

容器类型转换

列表、元组、集合可相互转换

tuple(): 将某个序列转换成元组
list1 = [10, 20, 30, 40, 50, 20]
s1 = {100, 200, 300, 400, 500}
print(tuple(list1))
print(tuple(s1))

list():将某个序列转换成列表**
t1 = ('a', 'b', 'c', 'd', 'e')
s1 = {100, 200, 300, 400, 500}
print(list(t1))
print(list(s1))
 
set():将某个序列转换成集合**
list1 = [10, 20, 30, 40, 50, 20]
t1 = ('a', 'b', 'c', 'd', 'e')
print(set(list1))
print(set(t1))

字典与其他容器的相互转换

dict1 = {"name": "张三", "age": 18, "sex": "男"}
list2 = list(dict1.items())
print(list2)
#>>>[('name', '张三'), ('age', 18), ('sex', '男')]
tup1 = tuple(dict1.items())
print(tup1)
#>>>(('name', '张三'), ('age', 18), ('sex', '男'))
set1 = set(dict1.items())
print(set1)
#>>>{('age', 18), ('sex', '男'), ('name', '张三')}

list2 = [('name', '张三'), ('age', 18), ('sex', '男')]
tup2 = (('name', '张三'), ('age', 18), ('sex', '男'))
set2 = {('name', '张三'), ('sex', '男'), ('age', 18)}
dict1 = dict(list2)
dict2 = dict(tup2)
dict3 = dict(set2)
print(dict1)
print(dict2)
print(dict3)

推导式

列表推导式

[表达式 for 变量 in 列表 if 条件]

创建一个空列表,追加1到10这几个数字
#for 循环实现
list1 = []
for i in range(1, 11):
    list1.append(i)
print(list1)

# 推导式实现
list2 = [num for num in range(1, 11)]
print(list2)

带if的列表推导式
将1到10的偶数添加到列表

# 方法1
list1 = []
for i in range(1, 11):
    if i % 2 == 0:
        list1.append(i)
print(list1)

# 方法二
list1 = [num for num in range(2, 11, 2)]
print(list1)

# 方法三
list1 = [num for num in range(1, 11) if num % 2 == 0]
print(list1)

字典推导式

{健:值 for 变量 in 字典.items() if 条件}

创建⼀个字典:字典key是1-5数字,value是这个数字的2次⽅
dict1 = {i: i * i for i in range(1, 6)}
print(dict1)

将两个列表变为⼀个字典
list1 = ['name', 'age', 'sex']
list2 = ['Tom', 20, '男']
dict1 = {list1[i]: list2[i] for i in range(len(list1))}
print(dict1)

提取字典中⽬标数据
computs = {'AUC': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}

#需求:提取上述电脑数量⼤于等于200的字典数据
dict1 = {key: value for key, value in computs.items() if value >= 200}
print(dict1)

元组推导式

(表达式 for 变量 in 元组 if 条件)

tup1 = (x for x in range(1, 10))
print(tup1)  
# >>><generator object <genexpr> at 0x000001587ECF4270>
# 返回的是生成器对象
# 使用tuple()
print(tuple(tup1))

print(tuple((x for x in range(1, 10))))

集合推导式

{表达式 for 变量 in 集合 if 条件}

# 计算数字 1,2,3 的平方数
set1 = {num ** 2 for num in range(1, 4)}
print(set1)

# 输出非abc的字母
var1 = 'abracadabra'
set1 = {a for a in var1 if a not in "abc"}
print(set1)