for循环的问题
lst =[]for i in lst:
lst.append('a')
print(lst)
上述中lst,这里如何理解?
第二题:
lst2 =
for i in lst:
lst.append('b')
print(lst2)
这个的答案,为啥是死循环?其实是跟上题有关系的。
各位路过朋友,帮忙解惑 第一题,因为列表是空的,所以不会循环。
第二题,因为你每遍历一次,列表就会添加一个元素,
这样是永远不会遍历完的,所以,最好不要改变for循环
所遍历的可迭代对象。 本帖最后由 suchocolate 于 2020-5-8 10:12 编辑
lst空吧,不会进入循环 在遍历一个可变长度类型时,最好不要在循环体内修改该变量。容易出错
例如你的第二题,在遍历lst的过程中向lst中添加了元素,导致永远无法遍历完,进入死循环
第一次循环,lst是,得到的 i 是 1,
第二次循环,lst是,得到的 i 是2,
第三次循环,lst是,得到的 i 是 'b',
第四次循环,lst是,得到的 i 是 'b',
……
之后每次遍历lst都会被添加一个元素,每次得到的 i 都是 'b',因此进入了死循环
第一题没有进入死循环,是因为lst一开始为空,根本没有进入循环
一般情况下若可能要在循环体内对遍历对象lst修改的话,用切片 for i in lst[:]:,相当于遍历的是lst 的一个副本,在循环中修改lst不影响该副本,这样可以避免死循环
第一次循环,lst副本是,得到的 i 是 1,循环后lst是,
第二次循环,lst副本是,得到的 i 是 2,循环后lst是
对lst副本遍历结束 lst2 =
for i in lst2:
lst2.append('b')
print(lst2)
第二题你题目都写错了。应该是这样吧。
你需要理解的是迭代器:比如你有一箱子书需要拿到书架上摆放,迭代器就是负责一次递一本书给你,直到箱子里没有书。
第二题可以这样理解:迭代器帮你从箱子里把书拿出来,但同时另一个人不停的在往箱子里放书……箱子里的书迭代器是拿不完的。
页:
[1]