Discuss / Python / map笔记

map笔记

Topic source

阿羊羽

#1 Created at ... [Delete] [Delete and Lock User]

在 Python 中,map() 函数可以接受一个函数和一个或多个可迭代对象作为参数。

map() 函数接受多个可迭代对象时,它会依次从每个可迭代对象中取出相应位置的元素,然后将这些元素作为参数传递给指定的函数进行处理,并返回一个迭代器,该迭代器包含了函数处理后的结果。

如果 map() 函数接受了多个可迭代对象,但是这些可迭代对象的长度不一致,那么 map() 函数会以最短的可迭代对象为准,即取最短长度的那个可迭代对象的长度为迭代次数,其他可迭代对象中多余的元素会被忽略。

让我们通过一个例子来说明这个过程:

python复制代码def add(x, y):
    return x + y

# 使用

 map 函数对两个列表进行逐元素相加





result = map(add, [1, 2, 3], [4, 5, 6, 7])
print(list(result))

在这个例子中,add 函数接受两个参数 xymap() 函数接受了两个列表  [1, 2, 3][4, 5, 6, 7] 作为参数。由于第二个列表的长度比第一个列表长,因此 map() 函数会以第一个列表的长度为准,即迭代三次。在每次迭代中,map() 函数会取出两个列表相同位置的元素作为参数传递给 add 函数进行处理。因此,函数的调用过程相当于 add(1, 4)add(2, 5)add(3, 6)。最后,map() 函数返回一个迭代器,其中包含了这三次函数调用的结果 [5, 7, 9]

阿羊羽

#2 Created at ... [Delete] [Delete and Lock User]
def 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

Reply