列表生成式 与生成器表达式

列表生成式

示例

生成一个列表  l=['egg1','egg2','egg3',''egg4',........'egg99']
按照常规写法如下:
list=[]
for i in range(100):
    list.append('egg%s'%(i))

print(list)

 但是如果我们按照列表的生成方式来做就很简单:
list=['egg%s' %i for i in range(100)]
print(list)
#打印结果如下:

['egg0', 'egg1', 'egg2', 'egg3', 'egg4', 'egg5', 'egg6', 'egg7', 'egg8', 'egg9', 'egg10', 'egg11', 'egg12', 'egg13', 'egg14', 'egg15', 'egg16', 'egg17', 'egg18', 'egg19', 'egg20', 'egg21', 'egg22', 'egg23', 'egg24', 'egg25', 'egg26', 'egg27', 'egg28', 'egg29', 'egg30', 'egg31', 'egg32', 'egg33', 'egg34', 'egg35', 'egg36', 'egg37', 'egg38', 'egg39', 'egg40', 'egg41', 'egg42', 'egg43', 'egg44', 'egg45', 'egg46', 'egg47', 'egg48', 'egg49', 'egg50', 'egg51', 'egg52', 'egg53', 'egg54', 'egg55', 'egg56', 'egg57', 'egg58', 'egg59', 'egg60', 'egg61', 'egg62', 'egg63', 'egg64', 'egg65', 'egg66', 'egg67', 'egg68', 'egg69', 'egg70', 'egg71', 'egg72', 'egg73', 'egg74', 'egg75', 'egg76', 'egg77', 'egg78', 'egg79', 'egg80', 'egg81', 'egg82', 'egg83', 'egg84', 'egg85', 'egg86', 'egg87', 'egg88', 'egg89', 'egg90', 'egg91', 'egg92', 'egg93', 'egg94', 'egg95', 'egg96', 'egg97', 'egg98', 'egg99']

 

 

跟一个if判断条件 如下:

list=['egg%s' %i for i in range(100) if i>20]
print(list)
#打印结果如下:
['egg21', 'egg22', 'egg23', 'egg24', 'egg25', 'egg26', 'egg27', 'egg28', 'egg29', 'egg30', 'egg31', 'egg32', 'egg33', 'egg34', 'egg35', 'egg36', 'egg37', 'egg38', 'egg39', 'egg40', 'egg41', 'egg42', 'egg43', 'egg44', 'egg45', 'egg46', 'egg47', 'egg48', 'egg49', 'egg50', 'egg51', 'egg52', 'egg53', 'egg54', 'egg55', 'egg56', 'egg57', 'egg58', 'egg59', 'egg60', 'egg61', 'egg62', 'egg63', 'egg64', 'egg65', 'egg66', 'egg67', 'egg68', 'egg69', 'egg70', 'egg71', 'egg72', 'egg73', 'egg74', 'egg75', 'egg76', 'egg77', 'egg78', 'egg79', 'egg80', 'egg81', 'egg82', 'egg83', 'egg84', 'egg85', 'egg86', 'egg87', 'egg88', 'egg89', 'egg90', 'egg91', 'egg92', 'egg93', 'egg94', 'egg95', 'egg96', 'egg97', 'egg98', 'egg99']

满足后面的if条件的情况下 在把值给到前面的表达式中去运用

一般情况只跟一个if条件  , 多了就不适合了

 

语法:list=[表达式 +循环体+(if判断)]

优点:方便 改变了编程习惯 可称之为声明式编程

 

生成式表达式:

1、把列表推导式的[]换成生成器表达式就得到一个生成器。   就满足了在生成列表内容过大,防止内存撑爆的情况下, 改用生成器就很好的解决这一问题。

2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性

老母鸡=(‘egg%s’%i  for i in range(100))

print(next(老母鸡)#打印结果  egg0

print(next(老母鸡)#打印结果 egg1

需要一个值 就调用一次

需要一次就调用一次

3、优点:省内存,一次只生产一个值在内存中。

 

 

 


 

posted @ 2018-04-03 15:33  C3的脚印  阅读(481)  评论(0编辑  收藏  举报