关于map,print
突然想在不用for循环的情况下遍历打印列表中的元素,没什么实际用途。于是我尝试了map(lambda x:print(x),a)
输出是一个map对象:
<map object at 0x000001C6AF6E1208>
又尝试了list(map(lambda x:print(x),a))
输出是:
1
2
3
后者的输出是什么原因呢?怎样才能实现输出是:
1
2
3
你是怎么尝试的 代码只有转化成列表而已? 你放进文件里面运行就好了 map是迭代器,所以直接输出就得到<map object at 0x000001C6AF6E1208>。为什么list后又None?这是print函数的返回值。
map的作用是映射,比如把列表所有数字转换为字符串。 冬雪雪冬 发表于 2020-6-3 15:37
map是迭代器,所以直接输出就得到。为什么list后又None?这是print函数的返回值。
map的作用是映射,比如把 ...
None列表我能理解,因为print的返回值是None
还有一个问题是为什么第一个没有打印123,但是第二个打印了?我想可能是因为map对象只记录了处理方法和第一个元素的地址,然后元素的存放类似于链表,取出元素的时候再用记录下来的方法去执行它,不知道这个理解是否正确? FC的注册很坑 发表于 2020-6-3 16:06
None列表我能理解,因为print的返回值是None
还有一个问题是为什么第一个没有打印123,但是第二个打印了 ...
map是迭代器,是惰性的,调用时还没实际执行,只有list或for循环时才运算。而且只能单次执行。
>>> a = map(lambda x: str(x), )
>>> list(a)
['1', '2', '3']
>>> list(a)
[]
页:
[1]