reduce用法:
reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
比方说对一个序列求和,就可以用reduce实现:
>>> def add(x, y):... return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25
如果考虑到字符串str也是一个序列,对上面的例子稍加改动,配合map(),我们就可以写出把str转换为int的函数:
整理成一个str2int的函数就是:
def str2int(s):
def fn(x, y):
return x * 10 + y
def char2num(s):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
return reduce(fn, map(char2num, s))
Python提供的sum()函数可以接受一个list并求和,请编写一个prod()函数,可以接受一个list并利用reduce()求积:
代码如下:
from functools import reduce
#列表:字符改整型
def str2int(list_in):
# 列表推导式
int_list=[int(item) for item in list_in]
return int_list
def prod(x,y):
return x*y
-------------------------------------------------------------------
str.format() 基本使用如下:
>>> print('{}网址: "{}!"'.format('菜鸟教程', 'www.runoob.com'))菜鸟教程网址: "www.runoob.com!"
括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。
在括号中的数字用于指向传入对象在 format() 中的位置,如下所示:
>>> print('{0} 和 {1}'.format('Google', 'Runoob'))Google 和 Runoob
>>> print('{1} 和 {0}'.format('Google', 'Runoob'))Runoob 和 Google
如果在 format() 中使用了关键字参数, 那么它们的值会指向使用该名字的参数。
>>> print('{name}网址: {site}'.format(name='菜鸟教程', site='www.runoob.com'))菜鸟教程网址: www.runoob.com
位置及关键字参数可以任意的结合:
>>> print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob',
other='Taobao'))站点列表 Google, Runoob, 和 Taobao。
#键盘输入
str2=input()
#此时是字符
list_in=str2.split(",")
list_out=str2int(list_in)
#print(list_out,type(list_out))
ans=reduce(prod,list_out)
print(ans)