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