迭代

迭代是 Python 中最强大的功能之一,是快速科学访问集合元素的方式之一。迭代器是一个可以记录遍历位置的对象,在迭代器进行迭代时,会从集合的第一个元素开始,直到所有元素都访问结束,并且只能前进不能后退。

迭代器使用iter(seq)进行创建,使用next(it)进行迭代操作。可以用于创建迭代器的数据类型有列表、元组、集合和字符串。如前面所述的推导式语法,创建一个迭代器最快的方法就是使用元组推导式。

使用next(it)可以对生成的迭代器进行取值,并将其向下步进一位。此外,迭代器还可以使用 for 语句进行遍历。以下两段代码的执行结果是一样的。

list = [1, 2, 3, 4]
it = iter(list)
for i in it:
	print(i, end=" ")

it2 = iter(list)
while True:
	try:
		print(next(it))
	except StopIteration:
		sys.exit()

Warning

注意print中的end关键字,它可以用于将结果输出到同一行,或者在输出的结尾添加不同的字符。

next()在默认情况下,步进到迭代器结尾的时候会抛出StopIteration异常以示迭代结束。但是next()除了可以接受迭代器作为第一个参数外,还可以接受一个默认值作为第二个参数。当给定默认值时,next(iter, default)在步进到迭代器末尾时便不会抛出StopIteration异常,而是会返回给定的默认值。

在 Python 中没有提供对于列表等可迭代类型中元素的检索函数,但是比较 Pythonic 的方法就是使用next()来完成,可参考以下示例语句。

item = next((element for element in arr if element["property"] == someValue), None)

以上语句可以完成对可迭代对象中第一个符合条件的元素进行搜索,并且当可迭代对象中没有满足指定条件的对象时,会直接返回None值。