1.30

1.30

python

#map/reduce
# map()函数接收两个参数,一个是函数,一个是Iterable
# map将传入的函数依次作用到序列的每个元素,
# 并把结果作为新的Iterator返回。
def f(x):
    return x*x
print(list(map(f,[1,2,3,4,5])))
print("------------")
L=[]
for n in[1,2,3,4,5]:
 L.append(f(n)) #append是将a看作一个对象,整体打包添加到b对象中
print(L)
#reduce
#map/reduce
# map()函数接收两个参数,一个是函数,一个是Iterable
# map将传入的函数依次作用到序列的每个元素,
# 并把结果作为新的Iterator返回。
def f(x):
    return x*x
print(list(map(f,[1,2,3,4,5])))
print("------------")
L=[]
for n in[1,2,3,4,5]:
 L.append(f(n)) #append是将a看作一个对象,整体打包添加到b对象中
print(L)
#reducereduce
# 把一个函数作用在一个序列[x1,x2,...]上,这个函数必须接收两个参数
# reduce把结果继续和序列的下一个元素做累积计算
from functools import reduce
def add(x,y):
    return x+y
reduce(add,[1,3,5,7,9])
from functools import reduce
def add(x,y):
    return x+y
L=[1,3,5,7,9]
print(reduce(add,L))
from functools import reduce
def fn(x,y):
    return x*10+y
print(reduce(fn,[1,3,5,7,9]))
from functools import reduce
def fn(x,y):
    return x*10+y
def char2num(s):
    dict={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
    return dict[s]
print(reduce(fn,map(char2num,'13579')))
#str2int(s)
dicts={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}
def str2int(s):
    def fn(x,y):
        return x*10+y
    def char2num(s):
        return dicts
    return reduce(fn,map(char2num,s))
    print(reduce(fn,map(char2num,s)))

    # 利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,
    # 其他小写的规范名字。输入:['adam', 'LISA', 'barT']
    # 输出:['Adam', 'Lisa', 'Bart']:
    def normalize(name):
        return name[0].upper() + name[1:].lower()  # [0]首字母大写

    L1 = input('请输入:')
    L2 = list(map(normalize, L1.split()))  # .split()==>['B', 'O', 'B']<=>['Bob]
    print(L2)
    # 请编写一个prod()函数,可以接受一个list并利用reduce()求积
    from functools import reduce
    def prod(L):
        x = list(input())
        y = list(input())
        return reduce(lambda x, y: x * y, L)
        print(reduce(lambda x, y: x * y, L))
from functools import reduce
def prod(L):
    def fn(x,y):
        return x*y
    return reduce(fn,L)
L=list(map(int,input('请输入:').split()))
print(prod(L))
#利用map和reduce编写一个str2float函数
# 把字符串'123.456'转换成浮点数123.456:
from functools import reduce
def str2float(s):
    def fn(x,y):
        return x*10+y
    n=s.index('.')#利用 index() 函数确定字符串 S 中 ‘.’的位置
    s1=list(map(int,[x for x in s[:n]]))
    s2=list(map(int,[x for x in s[n+1:]]))
    #先利用切片把传入的 str 分成前后两个部分
    #切割好的 str 利用 int 变成整数,map() 函数负责把 int 作用到截取的 str 的每个元素中去。
    return reduce(fn,s1) + reduce(fn,s2)/10**len(s2)
print('\'123.4567\'=',str2float('123.4567'))
    #所以a[::-1]相当于 a[-1:-len(a)-1:-1],
    # 也就是从最后一个元素到第一个元素复制一遍,即倒序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值