Python使用iter()函数
iter()
函数是Python内置函数之一,用于返回一个迭代器对象。该函数接收两个参数:
iter(object[, sentinel])
其中,object
是一个可迭代对象,sentinel
是一个可选参数。如果指定了sentinel
参数,那么object
就是一个可调用的无参函数,只要这个函数返回的值等于sentinel
,iter()
就会停止迭代。
iter()
函数会返回一个迭代器对象,使用迭代器对象可以迭代一个序列、映射或者自定义对象。
下面,我们将详细讲解iter()
函数的使用方法。
使用iter()函数遍历序列
iter()
函数可以通过传递一个序列对象,返回一个迭代器对象,并且该迭代器对象可以用于遍历序列。
下面上代码演示:
# 声明一个列表
lst = [1, 2, 3, 4]
# 获取迭代器对象
it = iter(lst)
# 遍历序列
while True:
try:
# 获取下一个元素
item = next(it)
# 输出元素
print(item)
except StopIteration:
# 迭代结束
break
代码执行结果:
1
2
3
4
上面代码中,我们先定义了一个列表lst
,然后使用iter()
函数获取了该列表的迭代器对象it
。接下来,通过while
循环、next()
函数以及try/except
语句,遍历了该序列。当满足StopIteration
异常时,说明迭代结束。
自定义可迭代对象
我们也可以自定义一个可迭代对象,用于实现自己的迭代逻辑。自定义可迭代对象必须实现以下两个魔法方法:
__iter__(self)
__next__(self)
下面用代码演示一下:
class MyList:
def __init__(self, lst):
self.lst = lst
self.index = -1
def __iter__(self):
return self
def __next__(self):
self.index += 1
if self.index < len(self.lst):
return self.lst[self.index]
raise StopIteration
# 测试代码
my_lst = MyList([1, 2, 3, 4])
for item in my_lst:
print(item)
代码执行结果:
1
2
3
4
上面代码中,我们自定义了一个名为MyList
的类,该类实现了__iter__()
和__next__()
两个魔法方法。当我们用MyList
类创建一个自己的列表对象my_lst
,并且使用for
循环遍历该对象时,Python会自动调用__iter__(self)
方法获取一个迭代器对象,并且使用该对象进行遍历。
至此,我们已经讲解了使用iter()
函数的两种常见用法,即遍历序列和自定义可迭代对象。相信通过这篇教程,你已经对iter()
函数有了更深入的了解。