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