python列表生成式和生成器

阅读: 评论:0

python列表生成式和生成器

python列表生成式和生成器

1.列表生成式

概念:列表生成式是快速生成列表的一个公式

1.1.生成 1-100的列表

普通实现:

listData = [i for i in range(1,101)]
print(listData)
复制代码

结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

列表生成式实现:

listData = [i for i in range(1,101)]
listData复制代码

结果:同上

1.2取出所有带a的

list1 = ['asd','sdf','freg','sfag','refv','aser','sdfr','dfgi']
#取出所有带a的
#普通写法
rs_list = []
for s in list1:if 'a' in s:rs_list.append(s)
print(rs_list)
#列表生成式
list2 = [x for x in list1 if 'a' in x]
print(list2)复制代码

1.3 双重for循环

普通写法:

list = []
for x in range(0,10)for y in range(10,20)s = x * ylist.append(s)
list
复制代码

列表生成式写法:


list = [x*y for x in range(0,10)for y in range(10,20]
list复制代码

2.字典生成式


#for循环遍历列表,将列表中小元组key和value取出,作为字典中的key:value
list4 = [('name','zhangsan'),('age',22),('phone',110)]
list = {key:value for key,value in list4}
list
复制代码

3.列表生成器和列表生成式的区别

列表生成式:会将所有的结果全部计算出来,把结果存放到内存中,如果列表中数据比较多,会占用过多的内存空间,可能导致MemoryError内存错误或者导致程序在运行时出现卡顿的情况;将列表生成式的 [] 改成 ()就是一个生成器

列表生成器:会创建一个列表生成器对象,不会一次性的把所有结果都计算出来,如果需要序号获取数据,可以使用next()函数来获取,但要注意,一旦next()函数获取不到数据,会导致出现StopIteration异常错误,可以使用 for循环遍历生成器对象,获取所有数据 视情况而定,如果数据量比较大,推荐使用生成器;python2.7中就是 range(生成式) 和xrange(生成器) 的区别

代码:

generator = (i for i in range(10))
print(next(generator))
print(next(generator))
# for x in generator:
#     print(x)
复制代码

结果:0 1

#2 3 4 5 6 7 8 9

生成器函数用next调用

def fun():for i in  range(1,100):print("模拟一个耗时操作")yieldnext(fun())
复制代码

本文发布于:2024-01-28 05:52:26,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063923505263.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:生成器   列表   python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23