Python中的map用法

151 阅读1分钟

迭代器

要具体了解map,我们首先要了解什么是迭代器。

我们知道列表是可以用for in实现遍历的,但如果是整数则会报错:

a = 123
for i in a:
  print(i)

解释器会告诉你,int这个对象是不可迭代的

Traceback (most recent call last):
  File "C:\Users\HW\AppData\Local\Programs\Python\Python38\test2.py", line 2, in <module>
    for i in a:
TypeError: 'int' object is not iterable

而列表之所以可以使用,就是因为列表中存在迭代器

image.png

这里需要注意,虽然列表是可迭代的,但列表本身不是迭代器,而是用iter()方法作为迭代器

a = [1,2,3]
xd = iter(a)
print(xd.__next__())

输出结果:

1

迭代器的使用可以大大节约内存,在遍历时只需一个一个取出,而不是把所有元素都取出。

map函数

map函数基本用法是:

map(函数,可迭代对象)

而map的返回值就是迭代器对象,比如下面的代码

num = [1,2,3,4]
def square(i):
  return i*i

nums = []
nums = map(square,num)
print(nums)

运行结果就是:

<map object at 0x0000023FD0BE61C0>

如果想要正常打印,就需要把迭代器对象转化为列表

num = [1,2,3,4]
def square(i):
  return i*i

nums = []
nums = map(square,num)
nums = list(nums)
print(nums)

之后就可以正常打印了

[1, 4, 9, 16]

当然我们也可以采用lambda表达式的方法:

num = [1,2,3,4]
nums = map(lambda x:x*x,num)
nums = list(nums)
print(nums)

参考资料

@bilibili up主:偶尔有点小迷糊

www.bilibili.com/video/BV18R…