reduce用法和str.format() 基本使用

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)

你可能感兴趣的:(reduce用法和str.format() 基本使用)