map函数和next函数的使用方法

x=map(ord,l'a','3','2'1)
print(x)
y=list(map(ord,【a,3,2】))#用map 对象生成列表
print("生成的列表是:",y)
x1=next(x)#第一次迭代为什么值是49而不是97

map返回的是一个迭代器,a不是对应了97?next函数找下一个呗,98对应了十进制49。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/738039
  • 这篇博客你也可以参考下:map函数的用法
  • 除此之外, 这篇博客: map()函数的使用简介、举例说明、注意事项、常见错误中的 三、map()函数的注意事项、常见错误 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1、关于python版本需要注意的

    	在python3.x版本里面,map()的返回值是iterators,而不是list, 所以想要使用,需将
    iterator 转换成list ,而在python2.x版本里,map()是直接返回list关于python()函数中
    常见的错误如下所示:我这里使用的是python3.x的版本
    

    还是上面的代码,但是map()前面我删除了list

    a=[3.7,4,5]
    b=map(int,a)
    print(b)
    

    结果报错如下所示:
    <map object at 0x00000231F8C674E0>

    2、当参数function没有返回值return时,直接返回成None或者没有任何返回值
    (1)有pass语句

    def sum(x):
        pass
    
    m=(1,2,3)
    print(list(map(sum,m)))
    

    输出结果:

    [None, None, None]
    
    Process finished with exit code 0
    

    (2)没有pass、return语句,没有任何返回值

    def sum(x):
    
    m=(1,2,3)
    print(list(map(sum,m)))
    

    输出结果

    Process finished with exit code 0
    

    3、当处理两个并行的list时候,注意两个list的类型数量相同
    (1)类型不同

    a=(1,2,3,"c")
    b=(1,2,3,4)
    m=list(map(lambda x,y:x*y,a,b))
    print(m)
    

    报错如下:提示其中有不是整型的

    TypeError: can only concatenate str (not "int") to str
    Process finished with exit code 1
    

    改成同一类型

    a=(1,2,3,4)
    b=(1,2,3,4)
    m=list(map(lambda x,y:x*y,a,b))
    print(m)
    

    正确结果如下所示:

    [1, 4, 9, 16]
    

    (2)数量不同时
    不会报错,但是按照短的list去处理
    例子一

    a=(1,2,3,4)
    b=(1,2,3)
    m=list(map(lambda x,y:x*y,a,b))
    print(m)
    

    结果:

    [1, 4, 9]
    

    这样的话a里面的最后一个整数4就没有接受任何的处理
    例子二

    def add(x,y,z):
        return x,y,z
    a=(1,2,3,4)
    b=(1,2,3)
    c=(1,2,3,4,5)
    m=list(map(add,a,b,c))
    print(m)
    

    结果

    [(1, 1, 1), (2, 2, 2), (3, 3, 3)]
    
  • 您还可以看一下 唐宇迪老师的深度学习-行人重识别实战(2020最新)课程中的 map值计算方法小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    问题解答:

    map函数是Python内置的高阶函数之一,接收一个函数f和一个可迭代对象,将可迭代对象中的每个元素逐一调用函数f处理,并返回一个包含处理结果的可迭代对象。以下是map函数的详细使用方法以及相关示例:

    1. map函数的基本用法

    map函数的基本语法是:

    map(function, iterable, ...)
    

    其中,function表示要调用的函数,iterable表示可迭代对象,即需要处理的元素序列,可以是列表、元组、字符串等。

    以下是一个基本的使用案例,定义一个函数,将一个数字列表中的每个元素平方:

    def square(x):
        return x * x
    
    numbers = [1, 2, 3, 4, 5]
    squared_numbers = map(square, numbers)
    print(list(squared_numbers)) # 输出 [1, 4, 9, 16, 25]
    
    1. map函数与lambda表达式的结合使用

    由于map函数需要接收一个函数作为参数,如果只是为了简单地对列表中的每个元素做一个操作,可以使用lambda表达式来定义匿名函数。

    以下是一个使用lambda表达式的案例:

    numbers = [1, 2, 3, 4, 5]
    squared_numbers = map(lambda x: x * x, numbers)
    print(list(squared_numbers)) # 输出 [1, 4, 9, 16, 25]
    
    1. map函数的多个可迭代对象用法

    当map函数有多个可迭代对象作为参数时,函数需要接收多个参数并返回相应的结果。

    以下是一个使用两个列表作为参数的案例,返回两个列表元素相加的结果:

    numbers1 = [1, 2, 3, 4, 5]
    numbers2 = [10, 20, 30, 40, 50]
    result = map(lambda x, y: x + y, numbers1, numbers2)
    print(list(result)) # 输出 [11, 22, 33, 44, 55]
    
    1. map函数的惰性计算以及迭代器用法

    map函数在Python3中返回的是迭代器类型。因为迭代器具有惰性计算的特性,所以需要注意在使用时不要多次调用,否则会导致结果不对。

    以下是一个关于迭代器用法的案例:

    numbers = [1, 2, 3, 4, 5]
    squared_numbers = map(lambda x: x * x, numbers)
    print(squared_numbers) # 输出 <map object at 0x7fa10e11fa90>
    
    for n in squared_numbers:
        print(n) # 输出 1 4 9 16 25
    
    print(list(squared_numbers)) # 输出 []
    

    可以看到,第一次使用迭代器时,结果可以正常输出。但是在第二次使用迭代器时,结果为空,这是因为迭代器已经指向了最后一个元素。

    此时,需要将迭代器转为列表或者其他可迭代对象:

    numbers = [1, 2, 3, 4, 5]
    squared_numbers = map(lambda x: x * x, numbers)
    print(list(squared_numbers)) # 输出 [1, 4, 9, 16, 25]
    
    squared_numbers = map(lambda x: x * x, numbers)
    for n in squared_numbers:
        print(n) # 输出 1 4 9 16 25
    
    squared_numbers = list(map(lambda x: x * x, numbers))
    print(squared_numbers) # 输出 [1, 4, 9, 16, 25]
    
    1. 综合示例

    请编写一个函数,将一个包含若干英文名字的列表变成一个包含规范英文名字的列表,规范英文名字定义为首字母大写,其余字母小写。

    以下是一个实现该函数的参考代码:

    def format_name(name):
        return name.capitalize()
    
    names = ['adam', 'LISA', 'barT']
    formatted_names = map(format_name, names)
    print(list(formatted_names)) # 输出 ['Adam', 'Lisa', 'Bart']
    

    参考资料: - Python 内置高阶函数之 map


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^