迭代
迭代是 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()
next()
在默认情况下,步进到迭代器结尾的时候会抛出StopIteration
异常以示迭代结束。但是next()
除了可以接受迭代器作为第一个参数外,还可以接受一个默认值作为第二个参数。当给定默认值时,next(iter, default)
在步进到迭代器末尾时便不会抛出StopIteration
异常,而是会返回给定的默认值。
在 Python 中没有提供对于列表等可迭代类型中元素的检索函数,但是比较 Pythonic 的方法就是使用next()
来完成,可参考以下示例语句。
item = next((element for element in arr if element["property"] == someValue), None)
以上语句可以完成对可迭代对象中第一个符合条件的元素进行搜索,并且当可迭代对象中没有满足指定条件的对象时,会直接返回None
值。