Python 打印时结果不一致,想知道原因是什么?

>>> all=[""]


>>> i="One"


>>> l=(item for item in all if item in i)


>>> print(len(list(l)))


1

>>> print(len(list(l)))


0


>>>

第一次打印答案是1,没有任何修改第二次是0


心有法竹
浏览 142回答 2
2回答

慕标5832272

这是因为l它是一个生成器。当它停止迭代器时(第一次之后)它是空的并返回 len 为 0。使用[item for item in all if item in i]而不是(item for item in all if item in i)使其成为列表

白衣染霜花

你l是一个发电机。当你第一次调用它时,list(l)它会给你一个列表。第二次调用时,生成器为空,因此长度为0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python