您的位置:首页 > 编程语言 > Python开发

python3 map函数和reduce函数的实例:1)字符串转换整数; 2)字母大小写转换

2018-02-01 19:53 1321 查看
# -*- coding: utf-8 -*-
from functools import reduce
'''
练习一:
自己写一个函数,实现字符串转换为整数
{'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
例如: '123456'
返回 123456数字
使用map和reduce函数
'''
# 字符串也可以使用map函数遍历,让每一个字符都执行一次int函数
# list1 = list(map(int, '123456'))
'''
转换过程:
1.先将字符串传入char_number函数中,在函数中,根据传入的字符串,在字典中作为key取出对应的数字,并返回,使用map()让要转换字符串中的每一个字符都执行一次char_number函数,执行完成后会得到一个存放列表,列入[1,2,3,4,5,6]
2.使用reduce做累加,在累加函数中,让传入的第一个参数*10+第二个参数,依次执行,得到123456
'''
# 定义一个函数,将字符串转换为一个一个的数字
def char_number(string):
# 存放字符串数字的key,对应的值为数字
char_dict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
# 根据传递进来的字符串,作为key取出对应的数字
number = char_dict[string]
# 返回取出的数字
return number
# 转换列表
rs = list(map(char_number,'123456'))
# 将[1,2,3,4,5,6]组合起来,得到123456
def result(x,y):
# 让x*10+y
num = x * 10 + y
return num
# 在python3中需要引入reduce
from functools import reduce
# 使用reduce函数调用
rs = reduce(result,rs)
# 用lambda写简单的函数
# rs2 = reduce(lambda x,y:x * 10 + y,rs2)
print (rs)
print (type(rs))

# 定义一个INT(string)函数
# 闭包
def INT(string):
# 函数中可以嵌套函数
def char_number(s):
chars_dict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
num = chars_dict[s]
return num
rs = list(map(char_number,string))
# 累加
number = reduce(lambda  x,y:x*10+y,rs)
# 返回转换之后的整数
return number
number = INT('123456')
print (number)
print (type(number))

'''
练习二:
使用map()和reduce()函数实现
自己实现一个函数,类似于upper()或lower()函数的功能
例如:
string = 'ABCDEFG'

转换之后

string = 'abcdefg'

'''
# 大写转小写

# ABCDEFG 转换为 abcdefg
'''
1.把ABCDEFG每一个字符转换为小写,根据传入的字符从字典中取值,如果字典中没有这个key,使用dict.get(key,default) 如果没有key,取出default值
2.将获取的字符串累加
'''

def LOWER(string):

# 定义一个转换为小写的函数
def char_lower(s):
char_dict = {'A':'a','B':'b','C':'a','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',}
# 把s作为key取出小写字母
# 根据s取值,如果没有s这个key,说是小写的或是其他的数字之类的,直接返回这个结果
char = char_dict.get(s,s)
return char
rs_a = list(map(char_lower,string))
print (rs_a)

# 累加
rs_a = reduce(lambda x,y:x+y,rs_a)
print (rs_a)
print (type(rs_a))

LOWER('ADFnnn**')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: