1.利用map()和reduce()实现类似于lower()和upper()和int()得功能。

from functools import reduce

def char_to_number(string):
all_number_dict = {‘0’: 0, ‘1’: 1, ‘2’: 2, ‘3’: 3, ‘4’: 4, ‘5’: 5, ‘6’: 6, ‘7’: 7, ‘8’: 8, ‘9’: 9}
return all_number_dict[string]

res = map(char_to_number, ‘54’)

def result_number(x, y):
res = x * 10 + y
return res

result = reduce(result_number, res)
print(‘最终结果:’, result, type(result))

def custom_lower(s):
def char_lower(string):
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’}
all_char_dict1 = {‘a’: ‘A’, ‘b’: ‘B’, ‘c’: ‘C’, ‘d’: ‘D’, ‘e’: ‘E’, ‘f’: ‘F’}
# string形参,接收的是列表中的一个字符串,而不再是某一个字符了。
# print(‘=====string = ‘, string)
result = ”
# 遍历string字符串,将其中的大写字符,转化成小写。
for index in range(0, len(string)):
# 判断获取的当前字符是否是大写字符,如果是则转化;反之则不转化
# isupper():字符串内置方法,返回结果是bool类型的数据。
char_str = string[index]
# print(‘00000’, char_str)

        # 判断是否是大写字母开头的
        if char_str.isupper() == True:
            # 以大写字符为键,从字典中取出小写字符。
            every_char_result = all_char_dict[char_str]
            # print('22222', every_char_result)
        # if char_str.islower() == True:
        #     every_char_result = all_char_dict1[char_str]
        else:
            # every_char_result = char_str
            every_char_result = all_char_dict1[char_str]
            # print('11111', every_char_result)
        # 将转化后的字符和没有转化的字符,再次进行拼接,最终成为一个完整的字符串,并返回。
        result += every_char_result
    return result

# result_string函数是作用到reduce()函数的。
# reduce后所调用的函数有两个参数
# 让所有字符串连接起来
def result_string(x, y):
    return x + y

# 判断要转化的字符串是不是list类型的
# isinstance():用于判断一个变量是否属于某一种类型,是则返回True,不是则返回False。
if isinstance(s, list):
    # 是list,只调用map()
    return map(char_lower, s)
    # return reduce(result_string, map(char_lower, s))
else:
    # 不是list,需要调用map()和reduce()
    return reduce(result_string, map(char_lower, s))

res = custom_lower(‘AbC’)
print(res)
res = custom_lower([‘PP’, ‘AbcD’, ‘CddEf’])
print(res)
for r in res:
print(r)

你可能感兴趣的:(1.利用map()和reduce()实现类似于lower()和upper()和int()得功能。)