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

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

看到这个标题有没有很邪恶!推导式********************哈哈!我喜欢这个东西

和列表一样,列表推导式也采用方括号[]表示,并且用到了一个简写版的for循环,第一部分是一个生成结果列表元素的表达式,第二部分是一个输入表达式上的循环。阅读理解列表表达式的推荐做法是先从里面的for循环开始,向右查看是否有if条件,然后将推导式开始的那个表达式映射到每一个匹配的元素上去。

在这个例子中,我们用到了列表推导式,看起来有没有很叼,一行代码就搞定了

 

abc=[x for x in range(10) if x % 2 ==0 if x >5] print(abc) >>>[6,8]
如果不用列表推导式的话 #abc=[] #for i in range(10): #  if x % 2 == 0: #    if x >5: #    abc.append(x) #print(abc) #>>>[6.8] 有没有很low,就算用and if 也要两行,一个好的程序员能用一行代码能搞定的就不用两行甚至三行来做,所以来吧baby们,推倒吧! python还支持另外一种和列表表达式类似的结构,叫做生成器表达式(generator expression),除了它有一种称之为“惰性计算”的特点以外,它和列表推导式的用法基本一致。它的工作方式是每次处理一个对象,而不是一口气处理和构造整个,这样做的潜在优点是可以节省大量的内存。 下面这个例子和上面有没有很相似呢!那就是用()代替了[],这就变成了生成式了,如果直接print输出,会提示你 
at 0x033E5120>这段代码,说你输出的东西不是迭代器 这时候需要内置函数__iter__来搞定转化成迭代器。 再用__next__函数来输出生成器里的内容。 也许你觉得麻烦,但是如果你的列表是range(10000000000000)的时候,你还敢直接读进内存么,你要敢这么做,分分钟几十万上下的钱没了! 这时候就需要用生成器了 ,占内存小! abc=(x for x in range(10) if x % 2 ==0 if x >5) a=iter(abc) print(next(a)) print(next(a)) >>>6 >>>8

转载于:https://www.cnblogs.com/DE_LIU/p/7274285.html

你可能感兴趣的文章
说说今年的计划
查看>>
把discuzX 的用户登录信息添加到纯静态页面
查看>>
文件大小计算
查看>>
iOS:给图片置灰色
查看>>
Java 8 (5) Stream 流 - 收集数据
查看>>
ubuntu下安装JDK
查看>>
【C#】使用DWM实现无边框窗体阴影或全透窗体
查看>>
【MySql】脚本备份数据库
查看>>
keil5 配置 stm32f103rc 软件仿真
查看>>
RESTful到底是什么玩意??
查看>>
Oracle创建视图的一个问题
查看>>
(一)线性表
查看>>
hdu 1003 Max Sum (DP)
查看>>
mysql增备
查看>>
[APIO2015]雅加达的摩天楼
查看>>
andorid之帧布局FrameLayout
查看>>
(转,记录用)jQuery页面加载初始化的3种方法
查看>>
C++常量的引用 const
查看>>
51nod 1101 换零钱 【完全背包变形/无限件可取】
查看>>
python单例设计模式(待补充)
查看>>