Python生成器和迭代器笔记

本文介绍了Python中的推导式,包括列表推导、字典推导和集合推导,并通过实例展示了如何生成和使用生成器。同时,讨论了迭代器的概念,强调其线程不安全和只能遍历一次的特性。
摘要由CSDN通过智能技术生成

推导式是Python中很强大的、很受欢迎的特性,具有语言简洁,速度快等优点

1.列表推导式
2.字典推导式

3.集合推导式

整除3的数字列表

numbers = [x for x in range(100) if x % 3 == 0]

使用()生成generator将俩表推导式的[]改成()即可得到生成器

字典推导和列表推导的使用方法是类似的,只不中括号该改成大括号

快速更换key和value

mcase = {'a': 10, 'b': 34}

mcase_frequency = {v: k for k, v in mcase.items()}

集合推导式

们跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}

集合推导建字符串长度的集合

strings = ['a','is','with','if','file','exception']

{len(s) for s in strings} #有长度相同的会只留一个

将单词长度大于3的转为大写输出

names = ['bob','tom','alice','jerry','wendy','smith']
print([name.upper() for name in names if len(name)>3])

求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

[(x,y) for x in range(5) if x%2==0 for y in range(5) if y %2==1]

求m中3,6,9组成的列表

m = [[1,2,3],[4,5,6],[7,8,9]]
[i[2] for i in m]

#或
[m[i][2] for i in (0,1,2)]

求m,n中元素的乘积

m = [[1,2,3],[4,5,6],[7,8,9]]
n = [[2,2,2],[3,3,3],[4,4,4]]
[m[i][j]*n[i][j] for i in range(3) for j in range(3)]
结合两个列表的元素,如果元素之间不相等的话

[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]

生成器:
第一种方式:将列表的[]改为(),里面可以写推导

第二种方式:
通过裴波那切序列讲解:将print换成yield,每次生成一个值

然后也是可以调用next()
每到yield时,就会停止,返回当前这个值,可以一次一次next()调用

生成器的唯一注意事项就是:生成器只能遍历一次

迭代器:可以被next()调用的都为迭代器

iter返回迭代器自身,next返回容器中的下一个值,如果容器中没有更多元素了,则抛出StopIteration异常

迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问一遍后结束

迭代器特性:

1.跌代集合,字符串,有序依次———即有可迭代对象

2.线程不安全的,多线程访问同一个集合修改报错。

3.对于无法随机访问的数据结构,迭代器是唯一选择

4.只迭代当前元素,迭代前后均可不存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值