返回地图对象并将其转换为列表的地图会删除其中的所有元素

时间:2019-01-20 03:05:28

标签: python python-3.x map-function

刚刚了解到,map()返回的对象在in表达式中使用或转换为列表后不会保留。

是什么导致b最后被清空?

>>> a = [1, 2, 3]
>>> b = map(lambda x: x, a)
>>> b
<map object at 0x104d8ccc0>
>>> list(b)
[1, 2, 3]
>>> list(b)
[]

3 个答案:

答案 0 :(得分:3)

map输出一个迭代器,该迭代器在某些迭代器(lambda x: x)上应用函数(a)。结果,b是一个迭代器。首次调用list(b)时,迭代器b被调用多次,直到到达终点为止。之后,b是一个迭代器,没有任何可生成的项。因此,当您第二次调用list(b)时,它会输出一个空列表。

答案 1 :(得分:1)

map的{​​{3}}指定返回“迭代器”,而不是“迭代器”。 Python为documentation定义了一个迭代器;一旦到达终点,便再也不会返回其他项目。

第二次执行list(b)试图从已经在末尾的迭代器构建列表,因此它不返回任何项目,并且构造了一个空列表。

答案 2 :(得分:-2)

每当您调用list(b)时,都在其中使用迭代器,然后如果要存储b作为b使用,则清除变量list     a = [1、2、3]     b =列表(map(lambda x:x,a))     打印(b)

  
    
      

[1、2、3]           打印(* b)       1 2 3       希望对您有所帮助。

    
  

编辑:修复了我的错误。