8. 迭代工具函数
作用:
- 对一个或多个可迭代对象封装成生成器,方便迭代访问。
- 用于高效处理可迭代对象。
构造函数
函数
说明
zip(*iterables)
在多个迭代器上并行迭代,从每个迭代器返回一个数据项组成元组。生成元组的个数由最小的可迭代对象大小决定
enumerate(iterable, start=0)
返回一个元组,里面包含一个计数值(从 start 开始,默认为 0)和通过迭代 iterable 获得的值。
zip示例
# zip 函数示例
# 函数:zip(*iterables)
# 说明:在多个迭代器上并行迭代,从每个迭代器返回一个数据项组成元组。
# 生成元组的个数由最小的可迭代对象大小决定
numbers = [10086, 10000, 10010, 95588]
names = ["中国移动", "中国电信", "中国联通"]
# 用zip函数,每次迭代出元组,格式为(号码,名字)
for t in zip(numbers, names):
print(t)
for t in zip(range(1, 10000), numbers, names):
print(t) # (1, 10086, '中国移动')
for n, num, nam in zip(range(100), numbers, names):
print(n, num, nam)
enumerate 示例
# enumerate 函数示例
# 函数:enumerate(iterable, start=0)
# 说明:返回一个元组,里面包含一个计数值(从 start 开始,默认为 0)
# 和通过迭代 iterable 获得的值。
names = ["中国移动", "中国电信", '中国联通']
# 要求:为上述名称加一个序号,
# 用enumerate函数,每次迭代出元组,格式为(序号, 名字)
for t in enumerate(names, start=1):
print(t) # (1, '中国移动')
enumerate函数的实现原理
enumerate函数等价于:
def enumerate(iterable, start=0):
n = start
for elem in iterable:
yield n, elem
n += 1
练习
写一个程序,读入任意行的文字,当输入空行时结束输入。
打印带有行号的输入结果。
如:
$ python3 mytest.py
请输入: hello<回车>
请输入: world<回车>
请输入: bye<回车>
请输入: <回车>
输出如下:
第1行: hello
第2行: world
第3行: bye