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



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

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

谁能帮我解释为什么列表变得空?

>>> ================================ RESTART ================================
>>> x = ['an','bn','cn']
>>> x
['an', 'bn', 'cn']
>>> 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)
[]
>>> 

你使用的是 Python3,所以map返回一个 mapobject。只能循环访问一次映射对象。因此,如果您需要多次迭代项目,请将其转换为列表。(如果您需要按索引等查找,也可以)

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

或更好 - 列表理解

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

最新更新