可迭代对象
列表、元组、集合、字典、字符串等对象被称为可迭代对象
迭代器:
x=[1,2,3]
i=iter(x)
print(next(i))
print(next(i))
print(next(i))#next 每次只迭代出一个数,从前往后循序迭代,有几个数可以迭代几次,超过会提示没有可迭代对象
生成器:
使用yield :
复杂生成器:
def gen(n):
for i in range(n):
yield i*i
x=gen(5)
for i in x:
print(i)
输出结果:
0
1
4
9
16
简化生成器:
a=(i*i for i in range(5))
for i in a:
print(i)
输出结果一样
生成器有什么作用:节省储存空间和时间,第一步直接生成函数,不需要计算,
import sys
import time
t1=time.time()
mylist = [i for i in range(10000000)]
t2=time.time()
print("占用时间:",t2-t1)
print("占用空间:",sys.getsizeof(mylist))
t3=time.time()
mygen = (i for i in range(10000000))
t4=time.time()
print("占用时间:",t4-t3)
print("占用空间:",sys.getsizeof(mygen))
输出结果:
占用时间: 0.5699965953826904
占用空间: 89095160
占用时间: 0.0
占用空间: 104
练习:
构造一个计算绝对值的生成器。
b=[1,2,3,-4,-5,-3]
a=(abs(x) for x in b )#此时的a是个全是正数的列表
for i in a:
print(i)
输出结果:
1
2
3
4
5
3
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/61420.html