[英]Nested for loop unexpected output
我一直在尝试制作一个嵌套的for循环,但是由于某种原因,内部循环只循环了一次,我不知道为什么。 我已经将代码减少到最低限度,只是为了了解发生了什么事情:
pupil = db.session.query(Pupil).all()
result = db.session.query(Pupil_OLD).all()
for row in pupil:
for sublist in result:
print("sublist"+str(sublist.PUPIL_ID))
print("pupil"+str(row.PUPIL_ID))
这将产生:
pupil1
sublist1
sublist2
sublist3
pupil2
pupil3
虽然应该产生
pupil1
sublist1
sublist2
sublist3
pupil2
sublist1
sublist2
sublist3
pupil3
sublist1
sublist2
sublist3
有人知道我在做什么错吗?
我认为result
是一个即将到达终点的发电机。
您可以像这样重置它:
pupil = db.session.query(Pupil).all()
for row in pupil:
result = db.session.query(Pupil_OLD).all()
for sublist in result:
print("sublist"+str(sublist.PUPIL_ID))
print("pupil"+str(row.PUPIL_ID))
将其转换为列表是另一种选择,但您会错过酷炫的发电机;)
除了对生成器的热爱,如果重置它意味着重新查询数据库,那么使用列表可能会更好。
你应该做类似的事情
pupil = db.session.query(Pupil).all()
result = list(db.session.query(Pupil_OLD).all())
因此,似乎是生成器的db.session.query(Pupil_OLD).all()
的结果将转换为一个列表,该列表将不会像生成器那样被消耗。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.