迭代器
迭代器是访问集合元素的一种方式,可以记住遍历的位置的对象
迭代器有两个基本的方法:iter() 和 next()
字符串,列表或元组对象都可用于创建迭代器
字符串迭代
str1 = 'Python'
str_iter = iter(str1)
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
print(next(str_iter))
#输出
P
y
t
h
o
n
列表迭代
list = [2,4,6,8,10]
list_iter = iter(list)
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))
print(next(list_iter))
#输出
2
4
6
8
10
元组迭代
tup1 = ('java','python','php')
tup_iter = iter(tup1)
print(next(tup_iter))
print(next(tup_iter))
print(next(tup_iter))
print(next(tup_iter))
#输出
java
python
php
Traceback (most recent call last):
print(next(tup_iter))
StopIteration
StopIteration
从上面元组的迭代结果中,我们发现了第四次迭代报错:StopIteration
作用:防止出现无限循环迭代
list = [1,2,3,4,5,6,7,8,9]
for i in list:
if i > 3:
raise StopIteration
else:
print(i)
#输出
1
2
3
Traceback (most recent call last):
raise StopIteration
StopIteration
判断对象是否可迭代
from collections.abc import Iterable
print(isinstance([1,2,3,4],Iterable))
print(isinstance(1234,Iterable))
print(isinstance('123',Iterable))
#输出
True
False
True
生成器
生成器是一个用于创建迭代器的简单而强大的工具
使用 yield 语句,每次在生成器上调用next()时,它会从上次离开的位置恢复执行(它会记住上次执行语句时的所有数据值)
def reverse(data):
for index in range(len(data)-1, -1, -1):
yield data[index]
for i in reverse('Python'):
print(i)
#输出
n
o
h
t
y
P
系列文章索引
Python(一)关键字、内置函数
Python(二)基本数据类型
Python(三)数据类型转换
Python(四)字符串
Python(五)数字
Python(六) 列表
Python(七) 条件控制、循环语句
Python(八) 字典
Python(九) 集合