Python (十一) 迭代器与生成器

迭代器

迭代器是访问集合元素的一种方式,可以记住遍历的位置的对象

迭代器有两个基本的方法: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(九) 集合


Python (十一) 迭代器与生成器_第1张图片

你可能感兴趣的:(#,基础,python,开发语言)