为什么将地图对象打印为列表会更改;在;(python 3.7.3)?
下面是一些示例代码。我所要做的就是测试列表中是否存在项。该列表是使用map函数创建的。结果的变化是我先打印列表。知道为什么会这样吗为什么将地图对象打印为列表会更改;在;(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
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总是多余的。(这与问题无关。)完美。非常感谢。