迭代器
要具体了解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
而列表之所以可以使用,就是因为列表中存在迭代器
这里需要注意,虽然列表是可迭代的,但列表本身不是迭代器,而是用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主:偶尔有点小迷糊