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

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

时间:2018-04-03 17:36:19      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:nbsp   ima   适合   条件   src   优点   []   gpo   方式   

列表生成式

示例

生成一个列表  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、优点:省内存,一次只生产一个值在内存中。

 

 

 


 

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

标签:nbsp   ima   适合   条件   src   优点   []   gpo   方式   

原文地址:https://www.cnblogs.com/lx3822/p/8708809.html

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