利用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函数的方法用匿名函数来减少代码量,而且结果更加直观
>>> L2=list(map(lambda name:name[0].upper()+(name[1:]).lower(),L1))
>>> L2
[‘Adam‘, ‘Lisa‘, ‘Bart‘]
版权声明:本文为博主原创文章,欢迎转载和分享,但请声明出处http://blog.csdn.net/zhzz2012
原文地址:http://blog.csdn.net/zhzz2012/article/details/47422789