码迷,mamicode.com
首页 > 其他好文 > 详细

认识执行时机

时间:2020-04-02 13:07:46      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:表达式   pre   div   col   等价   span   元素   style   出现   

array = [1, 3, 5]
g = (x for x in array if array.count(x) > 0)
g为生成器,list(g)后返回[1,3,5],因为每个元素肯定至少都出现一次。所以这个结果这不足为奇。但是,请看下例:

array = [1, 3, 5]
g = (x for x in array if array.count(x) > 0)
array = [5, 7, 9]
请问,list(g)等于多少?这不是和上面那个例子结果一样吗,结果也是[1,3,5],但是:

In [74]: list(g)
Out[74]: [5]
这有些不可思议~~ 原因在于:

生成器表达式中, in 子句在声明时执行, 而条件子句则是在运行时执行。

所以代码:

array = [1, 3, 5]
g = (x for x in array if array.count(x) > 0)
array = [5, 7, 9]
等价于:

g = (x for x in [1,3,5] if [5,7,9].count(x) > 0)

 

认识执行时机

标签:表达式   pre   div   col   等价   span   元素   style   出现   

原文地址:https://www.cnblogs.com/miaoweiye/p/12619022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!