问题是如下代码?

b=(iforiinrange(5))print(2inb)print(4inb)print(3inb)前两个能判别为true,判别3却为flase?python小白,希... b = (i for i in range(5))

print(2 in b)
print(4 in b)
print(3 in b)
前两个能判别为true,判别3却为flase?
python小白,希望大佬能解答详细些,谢谢。
展开
 我来答
microroom
科技发烧友

2021-12-09 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1625万
展开全部

b是一个生成器对象,可以生成数字0,1,2,3,4,每次使用in运算符时都要消耗一些数字,比如判断2 in b时,需要消耗0、1、2,因2在生成器可以生成的数字中,所以2 in b返回True,而生成器还可以生成3、4,当判断4 in b时,3和4都会消耗掉,同时因4在生成器还可以生成的数字(3、4)中,所以4 in b也返回True。

最后当判断3 in b时,因生成器已用完,自然返回False。

如果将顺序改成

print(2 in b)

print(3 in b)

print(4 in b)

则都会是True。

下图是一个验证:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式