【python入门第二十三天】python函数-推导式

推导式

Python语言有一种独特的推导式语法,相当于语法糖的存在,可以帮你在某些场合写出比较精简酷炫的代码。

列表推导式

列表推导式是一种快速生成列表的方式。其形式是用方括号括起来的一段语句
lis =[xx for x in range(1,10)]
print(lis)
结果:[1,4,9,16,25,36,49,64,81]
如果不用推导式,如何完成这个功能
lis = []
for i in range(10):
lis.append(i
i)
print(lis)
打印结果:
[0,1,4,9,16,25,36,49,64,81]
列表推导式,还可以增加一些条件,其核心语法是用中括号[]将生成逻辑封装起来lis =[i*i for i in range(10) if i%2 == 0]
print(lis)
打印结果:[0,4,16,36,64]
多重循环
lis =[a+b for a in ‘123’ for b in ‘abc’]
print(lis)
同时循环a和b两个变量,再进行拼接
打印结果:
[‘1a’,‘1b’,‘1c’,‘2a’,‘2b’,‘2c’,‘3a’,‘3b’,‘3c’]
更多用法
dic ={“k1”:‘v1’,‘k2’:‘v2’}
lis =[k+":"+v for k,v in dic.items()]
print(lis)
打印结果:
[‘k1:v1’,‘k2:v2’]

字典推导式

有列表推导式,那有没有字典推导式呢?答案是有的,使用{}就可以定义了。
dic ={i:i**3 for i in range(5)}
print(dic)
i的三次方
打印结果:
{0:0,1:1,2:8,3:27,4:64}

集合推导式

大括号除了能用作字典推导式,还可以用作集合推导式,两者仅仅在细微处有差别。
s ={i for i in ‘abasrdfsdfa’ if i not in ‘abc’}
print(s)
把abc排除剩余字符串
打印结果:
{‘r’,‘f’,‘s’,‘d’}
有同学会说还有元组推导式,但是在python中元组被用作生成器了。是没有元组推导式的
tup =(x for x in range(9))
print(tup)
print(type(tup))
打印结果
<generator object at 0x000000000255DA98>
<class ‘generator’>

tup =tuple(x for x in range(9))
print(tup)
print(type(tup))
打印结果:
(0,1,2,3,4,5,6,7,8)
<class ‘tuple’>

面试真题

看下面代码回答输出的结果是什么?为什么?

result =[lambda x:x + i for i in range(10)]
print(result[0](10))

分析:

result =[lambda x:x + i,lambda x:x + i,lambda x:x + i,....]
print((lambda x:x + i)(10))
f = lambda x:x + i
f(10)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落羽凉笙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值