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

时间:2015-06-17 03:23:53

标签: python lambda

我只想弄清楚这个python代码中发生了什么。我试图使用this answer here,所以我正在修改控制台,我的列表元素就消失了。

我正在做的是将行加载到一个文件列表中,然后尝试使用另一个答案中的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)
[]
>>> 

1 个答案:

答案 0 :(得分:1)

您使用的是Python3,因此map会返回一个mapobject。您只能迭代一次mapobject。因此,如果您需要多次迭代项目,请将其转换为列表。 (如果你需要通过索引等查找。)

使用

x = list(map(lambda s: s.strip(), x))

或更好 - 列表理解

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