22-推导式

作者: ju7ran | 来源:发表于2019-04-11 13:08 被阅读0次

推导式

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 + i
f(10)
最终输出的结果为19

相关文章

  • 22-推导式

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

  • Python中各种推导式

    Python的各种推导式(列表推导式,字典推导式,集合推导式) 列表(list)推导式 字典(dict)推导式 集...

  • python推导式

    python的各种推导式(列表推导式、字典推导式、集合推导式) 推导式comprehensions(又称解析式),...

  • 024python的各种推导式

    python的各种推导式(列表推导式、字典推导式、集合推导式) 推导式comprehensions(又称解析式),...

  • 016 Python语法之推导式

    推导式 特性 好好应用推导式后面的条件判断 列表推导式 字典推导式 集合推导式 生成器推导式

  • 推导式 生成器 迭代器

    推导式 生成器 迭代器 1.推导式 推导式:列表推导式、字典推导式、集合推导式语法 [变量 for 变量 in 旧...

  • Python中的推导式

    列表推导式 字典推导式 集合推导式 生成器推导式

  • 列表推导式、字典推导式、集合推导式

    列表生成式(列表推导式) 字典推导式 集合推导式

  • PYTHON中的列表推导式,字典推导式,集合推导式

    推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式。...

  • python的列表推导式

    推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种 1.列表推导式也叫列表解析式。...

网友评论

    本文标题:22-推导式

    本文链接:https://www.haomeiwen.com/subject/hzltwqtx.html