推导式comprehensions(又称解析式),是Python的一种独有特性。可以从一个数据序列构建另一个新的数据序列。
推导式包括:1.列表(list)推导式 2.字典(dict)推导式 3.集合(set)推导式。
一,列表推导式
列表推导式(list comprehension)是利用其它列表创建新列表的一种方式,工作原理类似for循环,
即可对得到的元素进行转换或者筛选。
(1)列表推导式的基本格式:
变量名=[表达式 for 变量 in 列表] 或者
变量名= [表达式 for 变量 in 列表 if 条件]
(2)执行流程:
遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。
或者遍历列表中的内容给变量,然后进行判断,符合的值在给表达式。
1,将lst中的每一个元素进行平方后放入到一个新的列表中 lst = [1, 2, 3, 4, 5, 6, 7, 8]
方法一:普通解法
new_lst=[]
for i in lst:
num=i*i
new_lst.append(num)
print(new_lst) # [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) # [1, 4, 9, 16, 25, 36, 49, 64]
方法三:列表推导式
new_lst=[i*i for i in lst]
print(new_lst) # [1, 4, 9, 16, 25, 36, 49, 64]
2,要求在lst中分别取出[1,4,7]和[1,5,9] lst=[[1,2,3,],[4,5,6],[7,8,9]]
取出[1,4,7]的方法一:普通解法
new_lst=[]
for i in range(len(lst)):
ret=lst[i][0]
new_lst.append(ret)
print(new_lst) # [1,4,7]
取出[1,4,7]的方法二:列表推导式
new_lst=[lst[i][0] for i in range(len(lst))]
print(new_lst) # [1,4,7]
取出[1,5,9]的方法一:普通解法
for i in range(len(lst)):
ret=lst[i][i]
new_lst.append(ret)
print(new_lst) # [1,5,9]
取出[1,5,9]的方法二:列表推导式
new_lst=[lst[i][i] for i in range(len(lst))]
print(new_lst) # [1,5,9]
二,字典推导式
字典推导式是该思想的延续,语法差不多,只不过产生的是字典而已。
字典推导式格式:
变量名={....}
将字典中的key和value 进行对换
方法一:
dic={'k1':20,'k2':10}
new_dic={}
for key,value in dic.items():
new_dic[value]=key
print(new_dic) # {20: 'k1', 10: 'k2'}
方法二:列表推导式
dic={'k1':20,'k2':10}
new_dic={value:key for key,value in dic.items()}
print(new_lst) # {20: 'k1', 10: 'k2'}
三,集合推导式
集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]
计算列表中每个值的平方,自带去重功能
lst=[-2,3,-3,5]
set1={i**2 for i in lst}
print(set1) # {9, 4, 25}