前言
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列。
推导式包括:1.列表(list)推导式 2.字典(dict)推导式 3.集合(set)推导式。
1.列表(list)推导式
列表推导式(list comprehension)是利用其它列表创建新列表的一种方式,
工作原理类似for循环,即可对得到的元素进行转换或者筛选。
列表推导式的基本格式:
变量名=[表达式 for 变量 in 列表] 或者
变量名= [表达式 for 变量 in 列表 if 条件]
执行流程:
遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。
或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。
练习
将lst中每一个元素进行平方后放入到一个新列表中
lst = [1, 2, 3, 4, 5, 6, 7, 8]
#第一种方式
lst_new = [i * i for i in lst]
print(lst_new) # [1, 4, 9, 16, 25, 36, 49, 64]
#第二种方式:使用函数
def square(num):
return num * num
new_lst = [square(i) for i in lst]
print(new_lst)
2.字典推导式
字典推导式列表推导式思想的延续,语法差不多,只不过产生的是字典而已。
字典推导式格式:变量名={…}
练习
将字典中的key和value 进行对换。
#普通方式
dic = {'a': 10, 'b': 11}
new_dic = {}
for key, value in dic.items():
new_dic[value] = key
print(new_dic)
#使用字典推导式
dic = {'a': 10,'b': 11}
new_dic = {value: key for key, value in dic.items()}
print(new_dic)
dic = {k:v for k,v in zip(list(“ABC”),list(“123”))}
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
3.集合推导式
集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]
L = [1,1,1,2,2,2,3,4,5,6,7]
set = {i for i in L}
练习
计算列表中每个值的平方,自带去重功能
squared = {x**2 for x in [1, -1, 2]}
print(squared)