为什么将地图对象打印为列表会更改;在;(python 3.7.3)?

为什么将地图对象打印为列表会更改;在;(python 3.7.3)?,python,python-3.x,Python,Python 3.x,下面是一些示例代码。我所要做的就是测试列表中是否存在项。该列表是使用map函数创建的。结果的变化是我先打印列表。知道为什么会这样吗 In [20]: def f1(): ...: l = map(lambda x: x+'_1', ['a', 'b', 'c']) ...: if 'a_1' in l: ...: return True ...: else: ...: return False

下面是一些示例代码。我所要做的就是测试列表中是否存在项。该列表是使用map函数创建的。结果的变化是我先打印列表。知道为什么会这样吗

In [20]: def f1():
    ...:     l = map(lambda x: x+'_1', ['a', 'b', 'c'])
    ...:     if 'a_1' in l:
    ...:         return True
    ...:     else:
    ...:         return False
    ...:
    ...:

In [21]: def f2():
    ...:     l = map(lambda x: x+'_1', ['a', 'b', 'c'])
    ...:     print(list(l))
    ...:     if 'a_1' in l:
    ...:         return True
    ...:     else:
    ...:         return False
    ...:
    ...:

In [22]: f1()
Out[22]: True

In [23]: f2()
['a_1', 'b_1', 'c_1']
Out[23]: False
当您这样做时:

print(list(l))

map
list
emtpies您的地图,尝试调用
print(list(l))
两次,您就会明白我的意思。

这很有趣,我测试了它,发现
print(l)
而不是
print(list(l))
产生预期的行为。FWIW:
在l中返回'a_1'
…如果有一个
if…:return True else:return False总是多余的。(这与问题无关。)完美。非常感谢。