《老鸟python 系列》视频上线了,全网稀缺资源,涵盖python人工智能教程,爬虫教程,web教程,数据分析教程以及界面库和服务器教程,以及各个方向的主流实用项目,手把手带你从零开始进阶高手之路!点击 链接 查看详情




推导式

阅读:227569251    分享到

推导式即是 Python 内置的非常简单却强大的可以用来创建集合的语法,比如我们要生成 [0x0, 1x1, 2x2, 3x3, ..., 10x10] 这样的一个 list,我们可以写个函数通过循环来实现,Python 语言提供了更高级的语法,我们不需要写函数,可以直接把语法写在推导式内部可以生成我们想要的集合。

我们可以用推导式生成 list,set,或 dict 集合,对于 tuple 是生成器(我们下节介绍)。

list 推导式

比如我们想生成一个 [0x0, 1x1, 2x2, 3x3, ..., 10x10] 的 list,我们可以写个 for 循环来实现。

mylist = []
for item in range(0, 11):
    mylist.append(item * item)

print(mylist)

如果我们使用 list 推导式来实现以上需求,则只需要一句话,哥就问你装逼不装逼。

mylist = [item * item for item in range(0, 11)]
print(mylist)

比如我们想把 ['Hello', "老鸟Python", 2, ["Ok"] 中是字符串类型的成员的变成大写字母,代码要短,我用推导式。

mylist = ["Hello", "老鸟Python", 2, ["Ok"]]
myupperlist = [item.upper() if isinstance(item, str) else item for item in mylist]
print(myupperlist)

dict 推导式

我们知道使用中括号 [] 可以编写列表推导式,同样用大括号 {} 可以生成字典推导式。

mydict = {item: item * item for item in range(0, 11)}
print(mydict)

set 推导式

我们也可以用 set([]) 来作为集合推导式来生成 set。

myset = set([item * item for item in range(0, 11)])
print(myset)

本节重要知识点

会使用各种推导式,特别是 list 推导式。

要清楚推导式里面支持的语法。

作业

著名公司(某兴)笔试题:用列表推导式写出99乘法表,打印出效果如下。


如果以上内容对您有帮助,请老板用微信扫一下赞赏码,赞赏后加微信号 birdpython 领取免费视频。


登录后评论

user_image
z420038848
2024年8月31日 14:48 回复

for i in range(1,10): mylist = []; for k in range(i,10): pass sum = i * k; mylist.append(str(i) + " X " + str(k) + " = " + str(sum))

print(mylist)

user_image
WBScan
2020年9月9日 22:34 回复

推导式是写起来比较简单,但是debug是查看变量比较头疼


user_image
易昆-人工智能
2020年6月9日 17:55 回复
#coding:utf-8
#创建一个列表,把所有乘法表中的表达式都放在里面
sheet=[]
for y in range(1,10):
    for x in range(1,10):
        if x<=y:
            sum=x*y
            expression=str(x)+"*"+str(y)+"="+str(sum)
            row=x
            column=y
            sheet.append((expression,row,column))
#调整格式
for expression,row,column in sheet:
    if row==column:
        print expression
    else:
        print expression,

user_image
老鸟python
2020年6月9日 18:31

用推导式去做啊,还有这个是 py3 教程,你这个 print 语法是 py2 的,可以提交到 py2 教程里面。


user_image
萧振波
2019年3月4日 15:24 回复

观感上有点像linq?


user_image
雀投江
2019年1月23日 18:39 回复

想知道推导式为啥快。


user_image
白如冰
2020年8月6日 01:32

推导式里的for不一样吗,和快之有,只是为了看着高大上,语法糖而已