题目
利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]:
定义函数法
错误的尝试
def normalize(name):
name=name.lower()
name[0]=name[0]+‘A‘-‘a‘
return name
这里犯了一个错误,主要是c、c++的习惯思维,认为’A’,’a’这种写法就是单个字符了,但是我感觉在python中没办法表示单个字符了,即使用下标的方法,依然是一个子字符串。
修正为
def normalize(name):
name=name[0].upper()+(name[1:]).lower()
return name
使用了切片的操作
继续简化
因为题中并没有让你改变输入的参数,同时减少一行能体现python代码短小的特点
def normalize(name):
return name[0].upper()+(name[1:]).lower()
调用函数
>>> L1=[‘adam‘, ‘LISA‘, ‘barT‘]
>>> map(normalize,L1)
<map object at 0x0000000003B45C88>
>>> L1
[‘adam‘, ‘LISA‘, ‘barT‘]
这里map函数会把L1中每个元素使用normalize函数进行处理,并把返回值放在一起作为一个iterable类型的集合(map类型),所以不能输出
>>> L2=list(normalize,L1))
>>> L2
[‘Adam‘, ‘Lisa‘, ‘Bart‘]
lambda函数法
对于这种比较简单的输入输出型函数,可以使用lambda函数的方法用匿名函数来减少代码量,而且结果更加直观
>>> L2=list(map(lambda name:name[0].upper()+(name[1:]).lower(),L1))
>>> L2
[‘Adam‘, ‘Lisa‘, ‘Bart‘]
版权声明:本文为博主原创文章,欢迎转载和分享,但请声明出处http://blog.csdn.net/zhzz2012
时间: 2024-11-06 21:18:36