龙空技术网

Python技术分享—推导式

一姐姐 158

前言:

当前大家对“python中元组的操作”大致比较关怀,我们都想要了解一些“python中元组的操作”的相关内容。那么小编同时在网摘上收集了一些对于“python中元组的操作””的相关资讯,希望朋友们能喜欢,朋友们快快来了解一下吧!

此文来源于微博和今日头条:逻二妞,转载请注明出处,谢谢
推导式

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

列表推导式

列表推导式是一种快速生成列表的方式。其形式是用方括号括起来的一段语句

lis = [x * x 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 <genexpr> 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 + if(10)最终输出的结果为19

(写在最后,由于以后每天晚上九点半之后会更新Python基础的知识点,记得来看哦!)

标签: #python中元组的操作