coding:utf-8
将所有字符串中的字符,全部转化为小写。即可以是一个单独的字符串,也可以是一个字符串列表。
1>先使用map()函数,将字符串中的每一个字符转化为小写;
2>再使用reduce()函数,对map()函数返回的列表进行逻辑处理;
如果是一个字符串,需要使用map()和reduce()组合;
如果是一个字符串列表,只需要map()函数就可以了;
def custom_lower(s):
# char_lower函数是作用到map()函数的。
def char_lower(string):
# 将26个英文字母对应的小写字母,在字典中进行定义。
all_char_dict = {'A':'a', 'B':'b', 'C':'c', 'D':'d', 'E':'e', 'F':'f', 'G':'g', 'H':'h', 'I':'i', 'J':'j', 'K':'k', 'L':'l', 'M':'m', 'N':'n', 'O':'o', 'P':'p', 'Q':'q', 'R':'r', 'S':'s', 'T':'t', 'U':'u', 'V':'v', 'W':'w', 'X':'x', 'Y':'y', 'Z':'z'}
# string形参,接收的是列表中的一个字符串,而不再是某一个字符了。
# print '=====string = ', string
# 声明一个变量,用于记录每一次字符转化的结果
every_char_result = ''
# 声明一个变量,用于记录最终转化后的结果
result = ''
# 遍历string字符串,将其中的大写字符,转化成小写。
for index in xrange(0,len(string)):
char_str = string[index]
# 判断获取的当前字符是否是大写字符,如果是则转化;反之则不转化
# isupper():字符串内置方法,返回结果是bool类型的数据。
if char_str.isupper() == True:
# 以大写字符为键,从字典中取出小写字符。
every_char_result = all_char_dict[char_str]
else:
every_char_result = char_str
# 将转化后的字符和没有转化的字符,再次进行拼接,最终成为一个完整的字符串,并返回。
result += every_char_result
return result
# result_string函数是作用到reduce()函数的。
def result_string(x,y):
return x+y
# 判断要转化的字符串是不是list类型的
# isinstance():用于判断一个变量是否属于某一种类型,是则返回True,不是则返回False。
if isinstance(s, list):
# 是list,只调用map()
return map(char_lower, s)
else:
# 不是list,需要调用map()和reduce()
return reduce(result_string, map(char_lower, s))
res = custom_lower('AbCdEF')
print res
res = custom_lower(['OPPE', 'AbcD', 'CddEf'])
print res