文章目录
一、可迭代对象
1.可迭代对象定义
可迭代对象就是指通过 ‘for’ 循环,可以遍历出其中的数据。所以列表(list)、元组(tuple)、字典(dict)、字符串(str)都属于可迭代对象。
2.可迭代对象的判断
如何判断对象是否为可迭代对象有两种方法。
方法一:
通过导入 ‘collections’ 模块,代码如下:
import collections
list_a = ['1', '2', '3', '4']
print(isinstance(list_a, collections.Iterable)) # True
tuple_a = ('1', '2', '3', '4')
print(isinstance(tuple_a, collections.Iterable)) # True
dict_a = {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
print(isinstance(dict_a, collections.Iterable)) # True
str_a = '1234'
print(isinstance(str_a, collections.Iterable)) # True
代码的意思就是:该对象是不是一个可迭代的对象,是返回True,否返回False。
方法二:
通过 'dir( )' 函数查看对象的属性
list_a = ['1', '2', '3', '4']
print(dir(list_a))
tuple_a = ('1', '2', '3', '4')
print(dir(tuple_a))
dict_a = {'a': '1', 'b': '2', 'c': '3', 'd': '4'}
print(dir(dict_a))
str_a = '1234'
print(dir(str_a))
输出可以查看到属性,会发现 列表(list)、元组(tuple)、字典(dict)、字符串(str),都有一个 ’ __iter__ ‘ 的属性,那这个 ’ __iter__ ‘ 方法什么意思?就是可迭代对象的意思。
二、迭代器
1.迭代器的定义
可以通过next( )或 '__next__' 不断返回下一个值。它具有 '__iter__' 和 '__next__' 属性,这就是迭代器。
2.迭代器的创建
通过 ' iter( ) ' 或者 ' __iter__ ' 就创建了一个迭代器。代码如下:
list_a = ['1', '2', '3', '4']
a_iter = list_a.__iter__()
print(next(a_iter))
print(next(a_iter))
print(next(a_iter))
print(next(a_iter))
print(next(a_iter))
"""
输出为:
1
2
3
4
Traceback (most recent call last):
File "xxx.py",line 7, in <module>
print(next(a_iter))
StopIteration
"""
还可以通过以下代码创建一个迭代器:
a = (i for i in range(0, 5))
print(a) # 返回的是一个地址:<generator object <genexpr> at 0x000001F2FB144150>
# 调用
print(a.__next__()) # 0
print(a.__next__()) # 1
print(a.__next__())