Python 当我使用lambda表达式或赋值时,列表元素消失了

Python 当我使用lambda表达式或赋值时,列表元素消失了,python,lambda,Python,Lambda,我只是想弄清楚这段python代码中发生了什么。我试图使用,所以我修补了控制台,我的列表元素就消失了 我所做的是将这些行加载到一个文件到一个列表中,然后尝试使用另一个答案中的lambda元素从每个元素中删除换行符 有人能帮我解释一下为什么列表变空了吗 >>> ================================ RESTART ================================ >>> x = ['a\n','b\n','c\n']

我只是想弄清楚这段python代码中发生了什么。我试图使用,所以我修补了控制台,我的列表元素就消失了

我所做的是将这些行加载到一个文件到一个列表中,然后尝试使用另一个答案中的lambda元素从每个元素中删除换行符

有人能帮我解释一下为什么列表变空了吗

>>> ================================ RESTART ================================
>>> x = ['a\n','b\n','c\n']
>>> x
['a\n', 'b\n', 'c\n']
>>> x = map(lambda s: s.strip(), x)
>>> x
<map object at 0x00000000035901D0>
>>> y = x
>>> y
<map object at 0x00000000035901D0>
>>> x
<map object at 0x00000000035901D0>
>>> list(x)
['a', 'b', 'c']
>>> x = list(x)
>>> x
[]
>>> y
<map object at 0x00000000035901D0>
>>> list(y)
[]
>>> 
重新启动================================ >>>x=['a\n','b\n','c\n'] >>>x ['a\n'、'b\n'、'c\n'] >>>x=映射(λs:s.strip(),x) >>>x >>>y=x >>>y >>>x >>>名单(十) ['a','b','c'] >>>x=列表(x) >>>x [] >>>y >>>名单(y) [] >>>
您正在使用Python3,因此
map
返回一个mapobject。只能在mapobject上迭代一次。因此,如果需要多次迭代这些项,请将其转换为列表。(如果您需要通过索引等进行查找,也可以使用此选项。)

使用

或者更好——一份清单

x = [s.strip() for s in x]

列表
调用环绕
映射
,因为Py3返回一个
映射
对象
映射对象是什么?@dfeuer Lazy computing。它允许您有效地映射一个非常大,甚至无限长的iterable。@jme知道为什么它返回一个
mapobject
而不是
生成器
?这听起来就像发电机理解的结果,出于同样的原因。。。
x = [s.strip() for s in x]