enumerate
迭代某个数据结构,同时返回个数与元素。初次之外,还可以配置第二个参数,第二个参数指定起始序号(默认为 0)。
items = [('butter', 'fly'), ('butter2', 'fly2')]
for idx, (first, second) in enumerate(items, 1):
print(f'#{first}: {second}')zip
可以用 Python 内置的 zip 函数来实现。这个函数能把两个或更多的 iterator 封装成惰性生成器(lazy generator)。每次循环时,它会分别从这些迭代器里获取各自的下一个元素,并把这些值放在一个元组里面。
names = ['1', '11', '221']
counts = [1, 2, 3]
for name, count in zip(names, counts):
print(name, count)如果提供的迭代器的长度不一致,那么只要其中任何一个迭代完毕,zip 就会停止。
如果想按最长的那个迭代器来遍历,那就改用内置的 itertools 模块中的 zip_longest 函数。