4.4.3 相关内置函数

我们再看一下用得比较多的相关内置函数。

1. enumerate()

格式:enumerate(iterable,start=0)

功能:返回下标和值的enumerate对象。第1个参数表示可迭代(Iterable)对象,第2个参数表示下标的开始值,默认从0开始。

通过帮助我们得知enumerate对象是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。

这里还要补充说明的是list()、tuple()、dict()、set()函数能将可迭代(Iterable)对象转换为列表、元组、字典、集合。

2. zip()

格式:zip(iter1[,iter2[…]])

功能:将多个迭代器(Iterator)对象(或者可迭代(Iterable)对象)中的元素压缩到一起,返回一个zip对象。

同样通过帮助我们得知zip对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。

3. map()

格式:map(func,∗iterables)

功能:把一个函数func依次映射到可迭代(Iterable)对象的每个元素上,返回一个map对象。

同样通过帮助我们得知map对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。

这里使用了lambda表达式,详细用法请参见第6章。

4. filter()

格式:filter(function or None,iterable)

功能:把一个带有一个参数的函数function作用到一个可迭代(Iterable)对象上,返回一个filter对象,filter对象中的元素由可迭代(Iterable)对象中使得函数function返回值为True的那些元素组成;如果指定函数为None,则返回可迭代(Iterable)对象中等价于True的元素。

同样通过帮助我们得知filter对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。

【例4-9】 从键盘输入一个正整数值n,编程求它的所有因子(不包括1和该数本身)之和。规定n值不大于1000,如果大于1000,直到输入不大于1000的值为止。输出由所有因子组成的列表及所有因子之和。

程序代码:

程序可能的一次运行结果:

程序可能的一次运行结果: