map笔记
Topic sourcedef str2float(s):
digits = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}
a , b = s.split('.')
def fn(x , y):
return x * 10 + y
def char2num(x):
return digits[x]
return reduce(fn, map(char2num, a)) + reduce(fn, map(char2num, b)) / (10 ** len(b))
- 1
阿羊羽
在 Python 中,
map()
函数可以接受一个函数和一个或多个可迭代对象作为参数。当
map()
函数接受多个可迭代对象时,它会依次从每个可迭代对象中取出相应位置的元素,然后将这些元素作为参数传递给指定的函数进行处理,并返回一个迭代器,该迭代器包含了函数处理后的结果。如果
map()
函数接受了多个可迭代对象,但是这些可迭代对象的长度不一致,那么map()
函数会以最短的可迭代对象为准,即取最短长度的那个可迭代对象的长度为迭代次数,其他可迭代对象中多余的元素会被忽略。让我们通过一个例子来说明这个过程:
在这个例子中,
add
函数接受两个参数x
和y
,map()
函数接受了两个列表[1, 2, 3]
和[4, 5, 6, 7]
作为参数。由于第二个列表的长度比第一个列表长,因此map()
函数会以第一个列表的长度为准,即迭代三次。在每次迭代中,map()
函数会取出两个列表相同位置的元素作为参数传递给add
函数进行处理。因此,函数的调用过程相当于add(1, 4)
、add(2, 5)
和add(3, 6)
。最后,map()
函数返回一个迭代器,其中包含了这三次函数调用的结果[5, 7, 9]
。