![Python程序设计教程(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/531/34752531/b_34752531.jpg)
4.4.3 相关内置函数
我们再看一下用得比较多的相关内置函数。
1. enumerate()
格式:enumerate(iterable,start=0)
功能:返回下标和值的enumerate对象。第1个参数表示可迭代(Iterable)对象,第2个参数表示下标的开始值,默认从0开始。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image93.jpg?sign=1738937951-c5vB6Ze6udQ3ckJoVmLvhUfmYmsx40ER-0-2c816caa7d6fb578d8985cddfe06ff80)
通过帮助我们得知enumerate对象是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image94.jpg?sign=1738937951-ECSzzvdlDYMGRFvYQjEM1WK5sqOs0455-0-c271e3bd8f2c47d5102be9bd7511e403)
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image95.jpg?sign=1738937951-93qKBHMZ5WPJKDALTVvX0NfkAyL84XXK-0-c0039c83130650e0e65c0a29d5a897ee)
这里还要补充说明的是list()、tuple()、dict()、set()函数能将可迭代(Iterable)对象转换为列表、元组、字典、集合。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image96.jpg?sign=1738937951-LWXc7g5Du4YL3g4Kj7oJ3QMNd3KbU783-0-cc185ff9cff0f7fe81cb94ddc98371d7)
2. zip()
格式:zip(iter1[,iter2[…]])
功能:将多个迭代器(Iterator)对象(或者可迭代(Iterable)对象)中的元素压缩到一起,返回一个zip对象。
同样通过帮助我们得知zip对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image97.jpg?sign=1738937951-Fj9lizstbAVM91aG3c9HfM0aUnEaWdku-0-6003830cf2a39aa3bf49e46baa83f106)
3. map()
格式:map(func,∗iterables)
功能:把一个函数func依次映射到可迭代(Iterable)对象的每个元素上,返回一个map对象。
同样通过帮助我们得知map对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image98.jpg?sign=1738937951-3KFQPmIujPOikz3MFnpds7wMHPx4IWhh-0-9a016a4e4005ec20e33fcc096e3bbdb6)
这里使用了lambda表达式,详细用法请参见第6章。
4. filter()
格式:filter(function or None,iterable)
功能:把一个带有一个参数的函数function作用到一个可迭代(Iterable)对象上,返回一个filter对象,filter对象中的元素由可迭代(Iterable)对象中使得函数function返回值为True的那些元素组成;如果指定函数为None,则返回可迭代(Iterable)对象中等价于True的元素。
同样通过帮助我们得知filter对象既是一个可迭代(Iterable)对象也是一个迭代器(Iterator)对象。
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image99.jpg?sign=1738937951-PMDUJ6HA4kAxZYyMgapMdwEHEaznrWOK-0-4f2fef80174d122851fdf5dcbac21a22)
【例4-9】 从键盘输入一个正整数值n,编程求它的所有因子(不包括1和该数本身)之和。规定n值不大于1000,如果大于1000,直到输入不大于1000的值为止。输出由所有因子组成的列表及所有因子之和。
程序代码:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image100.jpg?sign=1738937951-KBlszxjH6HvD7nKghEeMFnZfobi432YE-0-5c78772ba932543b18689ea35f433bfc)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image101.jpg?sign=1738937951-SVpmg0PBZMI1fGhbx4xbsRwtSgfR4xMI-0-6750f541c4e5ca1e722cdc886b17a928)
程序可能的一次运行结果:
![](https://epubservercos.yuewen.com/8599B6/18562449808364906/epubprivate/OEBPS/Images/image102.jpg?sign=1738937951-HvWDK0zh7hTz3Iz3lo4cFvMNajopv5Xt-0-18e6191625f8f5f26da707caa398ba35)