python 推导式
python 推导式在Python代码中非常常用,推导式是可以从一个数据序列构建另一个新的数据序列的结构体。其优势就是比函数简洁。
推导式:
包括列表推导式、字典推导式、集合推导式。
列表推导式
列表推导式最为常见
格式: [element_expr for element in list]
代码例子:
list_1 = [pow(i, 2) for i in range(10)]#使用range,构造0-9平方的列表
print(list_1)
list_2 = [pow(i,2) for i in [0,1,2,3,4,5,6,7,8,9]]#使用list,构造0-9平方的列表
print(list_2)
list_3 = [pow(i,2) for i in range(10) if i%2 ==0]#增加if条件判断,构造0-9中偶数的平方
print(list_3)
num_l = [[1,2,3],[4,5,6], [7,8,9]] #多层嵌套,构造1-9中偶数的平方
list_4 = [pow(i,2) for num in num_l for i in num if i%2==0]
print(list_4)
运行结果
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 4, 16, 36, 64]
[4, 16, 36, 64]
字典推导式
字典推导式列表推导式思想的延续,语法差不多,只不过产生的是字典而已。
{ key_expr: value_expr for value in dictionary if condition }
dict_stu = {"Tom": 100, "Bob": 94, 'Juni':56, 'Sanm':87}
#求分数大于90的学生和成绩
good_stu = {key:value for key,value in dict_stu.items() if value>=90}
print(good_stu)
运行结果
{"Tom": 100, "Bob": 94}
集合推导式
集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]。其基本格式如下:
{ expr for value in collection if condition }
chara_set = {"ss", '2eff', 'df3', 'dddd', 'ff3l0', 'c09j'}
#筛选出集合中纯字母字符串
all_pha_set = {value for value in chara_set if value.isalpha()}
print(all_pha_set)
运行结果
{"ss",'dddd'}