- # 利用 map() 函数, 把用户输入的不规范的英文名字, 变为首字母大写, 其他小写的规范名字.
- def f1(s):
- s=s.capitalize()
- return s
- list1= ['adam', 'LISA', 'barT']
- r=list(map(f1,list1))
- print(r)
知识点:
1, 函数, 面向过程的程序设计的基本单元. 何为面向过程? 通过一层一层的函数调用, 把复杂任务分解成简单的任务.
2, 函数式编程, 一种抽象程度很高的编程范式, 纯粹的函数式编程语言编写的函数没有变量, 因此, 任意一个函数, 只要输入是确定的, 输出就是确定的, 这种纯函数我们称之为没有副作用. 函数式编程的一个特点就是, 允许把函数本身作为参数传入另一个函数, 还允许返回一个函数. 由于函数内部的变量状态不确定, 同样的输入, 可能得到不同的输出, 因此, 这种函数是有副作用的. Python 对函数式编程提供部分支持. 由于 Python 允许使用变量, 因此, Python 不是纯函数式编程语言.
3, 高阶函数, 变量可以指向函数, 可以通过该变量来定义函数.>>>f=abs>>>f(-10) 10; 函数名其实就是指向函数的变量. 所以既然变量可以指向函数, 函数的参数能接收变量, 那么一个函数就可以接收另一个函数作为参数, 这种函数就称之为高阶函数.
4,Python 内建了 map() 函数, map() 函数接收两个参数, 一个是函数, 一个是 Iterable,map 将传入的函数依次作用到序列的每个元素, 并把结果作为新的 Iterator 返回. map() 传入的第一个参数是 f1, 即函数对象本身. 由于结果 r 是一个 Iterator,Iterator 是惰性序列, 因此通过 list() 函数让它把整个序列都计算出来并返回一个 list.
5, 可迭代对象, 可以直接作用于 for 循环的对象统称为可迭代对象 Iterable, 一类是集合数据类型, 如 list,tuple,dict,set,str 等; 一类是 generator, 包括生成器和带 yield 的 generator function. 生成器都是 Iterator 对象, 但 list,dict,str 虽然是 Iterable, 却不是 Iterator(迭代器). 因为 Python 的 Iterator 对象表示的是一个数据流, Iterator 对象可以被 next() 函数调用并不断返回下一个数据, 直到没有数据时抛出 StopIteration 错误. 可以把这个数据流看做是一个有序序列, 但我们却不能提前知道序列的长度, 只能不断通过 next() 函数实现按需计算下一个数据, 所以 Iterator 的计算是惰性的, 只有在需要返回下一个数据时它才会计算.
6,Python capitalize() 将字符串的第一个字母变成大写, 其他字母变小写. 语法: str.capitalize(). 参数: 无. 返回一个首字母大写的字符串. 注意首字符如果是非字母, 首字母不会转换成大写, 会转换成小写.
来源: http://www.bubuko.com/infodetail-3039756.html