为什么将map对象打印为列表会改变“in”的结果(python 3.7.3)?[duplicate]

snz8szmq  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(112)
    • 此问题在此处已有答案**:

Why can't I iterate twice over the same iterator? How can I "reset" the iterator or reuse the data?(5个答案)
两年前关闭了。
下面是一些示例代码。我所要做的就是测试列表中某个项目的存在。列表是使用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
wr98u20j

wr98u20j1#

当您这样做时:

print(list(l))

maplist的强制转换占用了你的Map,尝试调用print(list(l))两次,你就会明白我的意思。

相关问题