python 精华梳理

基础部分

map,reduce,filter,sort,推导式

自定义字符串转数字方法一不适用reduce

import re
def str2int(s):
    if not re.match(r'^\d+$',s):
        raise ValueError('请检查数字格式是否正确')
    else:
        digital={'0':0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}
        int_list = list(map(lambda k:digital[k] or 0,s))
        sum=0
        for i,v in enumerate(int_list):
            sum+=v*(10**(len(int_list)-i-1))
            
    return sum
print(str2int('456'))

自定义字符串转数字方法二使用reduce

from functools import reduce
import re
def str2int(s):
    if not re.match(r'^\d+$',s):
        raise ValueError('请检查数字格式是否正确')
    else:
        digital={'0':0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}
        int_list = list(map(lambda k:digital[k] or 0,s))
        
        return reduce(lambda a,b:a+b,[v*(10**(len(int_list)-i-1))for i,v in enumerate(int_list)])

print(str2int('456'))

猜你喜欢

转载自www.cnblogs.com/Frank99/p/9758558.html