[toc]
python基础十二 迭代器、生成器
1.迭代器
1.1 含义
一个一个取值
1.2 可迭代对象
#Python中规定,只要是具有__iter__()方法就是可迭代对象
str.__iter__()
list.__iter__()
tuple.__iter__()
dict.__iter__()
set.__iter__()
⚠️可迭代对象能够重复取值
1.3 迭代器使用示例
//使用示例1 将迭代器赋值给一个变量,这样就能重复取值了
可迭代对象能够重复取值
lst = [1,1,2]
将可迭代对象转换成迭代器
l = lst.__iter__()
print(l)
#结果:<list_iterator object at 0x7fc49811a0f0>,迭代器的内存空间地址
print(l.__next__()) #结果:1
print(l.__next__()) #结果:1
print(l.__next__()) #结果:2
print(1.__next__()) #结果:StopIteration 停止迭代,不能超过元素个数
⚠️有多少个元素就只能next多少次
//使用示例1 单独执行迭代器,这样每次只能取第一个值
lst = [1,1,2,4,5]
⚠️以下两个lst.__iter__()迭代器内存地址,mac中显示的是一样,win本有的一样,有的不一样!!!
print(lst.__iter__()) #<list_iterator object at 0x7fd0a80110f0>
print(lst.__iter__()) #<list_iterator object at 0x7fd0a80110f0>
print(lst.__iter__().__next__()) #结果:1 #lst.__iter__() 是一个迭代器1
print(lst.__iter__().__next__()) #结果:1 #lst.__iter__() 是一个迭代器1
⚠️这里迭代器是多个
1.4 for循环本质
⚠️⚠️⚠️for循环就是一个迭代器
s = "hehe"
for i in s:
print (i)
h
e
h
e
s = "hehe"
s1 = s.__iter__()
while True:
print (s1.__next__())
结果会报错如下:停止迭代
StopIteration
s = "hehe"
s1 = s.__iter__()
while True:
try: #尝试着运行一下缩进体中的内容,如果运行有问题用except接收一下
print (s1.__next__())
except StopIteration:
break
结果如下:
h
e
h
e