博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
列表推导式 生成器表达式
阅读量:5893 次
发布时间:2019-06-19

本文共 1435 字,大约阅读时间需要 4 分钟。

推导式 comprehensions(又称解析式):是 Python 中很强大的、很受欢迎的特性,具有语言简洁,速度快等优点

列表推导式 就是一个简单的公式,我们用这个列表推导式,把你好几行的for循环的过程给一行能解决掉,但是这个过程你必须放在列表的框中[  ]

一般用法:

#循环模式

#[经过加工的i for i in 可迭代对象]

 

#筛选模式

#[经过加工的i for i in 可迭代对象 if 条件 筛选]

 

比如你要将1-12的数字都加入一个列表中 ,这个时候你用for是最简便的

li = []  #新建一个列表  把所有的信息都加入其中for i in  range(1, 12):  #循环遍历1-12    li.append(i)print(li) #你以为这就是你最简便的方法吗  NO  最简便的方式 在下面呢 这就是列表的推导式
l1 = [i for i in range(1,13)]  #用列表的推导式来 做 print(l1)
 

生成器表达式:

其实就是和列表推导式 差不多 但是它的外部用的不是列表号  而是括号

l_obj = ('python %s期'% i for i in range(1,12))  #生成器生程式就是和列表推导式换了括号print(l_obj)print(l_obj.__next__())  #打印这个生成器生成式第一个元素print(l_obj.__next__())#打印这个生成器生成式第二个元素

 

#列表推导式:一目了然,占内存。

#生成器表达式:不易看出,节省内容。

推导式练习:

l2 = [i*i for i in range(1,11)]   #用列表推导式来做一个1-10的所有数字的平方print(l2)
#打印1-9的偶数
l3 = [i for i in range(1,10) if i %2 == 0]  print(l3)
#打印1-30内的所有的能整除3的数字 l3 = [i for i in range(31) if i %3 == 0] print(l3) #求一个列表中的嵌套的列表 然后把里面的元素含有两个e的元素打印出来
names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],          ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']] m = [name for i in names for name in i if name.count('e')==2] print(m)

推导式前面加返回的变量  后面就是for循环然后和可迭代的对象  还可以加其他的判断语句

生成器生程式只是列表的推导式给它的括号 改变下 然后生程式的取值也是按照__next__()方法来取值的

字典的推导式:

#去一个字典中的key对应的value的key给返回出来mcase = {
'a':10,'b':34}mcase_freque={ mcase[k]:k for k in mcase} #把字典中的对应的key和value翻转并且给输出print(mcase_freque)

 

转载于:https://www.cnblogs.com/zhaoyunlong/p/8719134.html

你可能感兴趣的文章
[IOI2018]组合动作——构造
查看>>
BZOJ1430小猴打架——prufer序列
查看>>
浅谈IT路的职业规划
查看>>
Webtoos 仿Q+云桌面框架
查看>>
Liunx查找命令解析与分析
查看>>
10条命令,1分钟时间检查Linux服务器性能
查看>>
python一个发邮件的函数
查看>>
mailto用法
查看>>
编程如何入门(创世纪新篇)
查看>>
EIGRP产生默认路由的方法
查看>>
php转义和正则问题
查看>>
Spring源码阅读--@Autowired注解自动装配
查看>>
Integrating Perl REST service with jQuery and a da
查看>>
给普通用户像ROOT用户一样权限!
查看>>
【MySQL】【安全】探讨MySQL备份所需最小权限
查看>>
各项异性过滤
查看>>
jfinal3.0+easyui1.4.4后台权限管理系统 [2017.2.11 更新]
查看>>
centos7安装telnet服务
查看>>
运维监控之Nagios实战(四)&Nagios报警
查看>>
Myeclipse2014中,新建部署Maven项目
查看>>