python 推导式

推导式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}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值