for循环
1.如下代码会打印几次呢?
for i in range(4):
print(i)
i = 10
会打印4次。
![905b2dfbf0687fb44dcb66fe26c0ac9f.png](https://img-blog.csdnimg.cn/img_convert/905b2dfbf0687fb44dcb66fe26c0ac9f.png)
第一次循环 :i = 0,
print输出后,i = 10 覆盖掉 i = 0。
当 i = 10 进入for循环前之时,for循环再次给i 赋值: i = 1 重新覆盖掉 i = 10。循环往复。
2.for循环内部的初始化
dict1 = {'id':0,'name':''}
list1 = []
for i in range(1,4):
dict1['id'] = i
list1.append(dict1)
print(list1)
输出:
![5dfee65fe5eca068775d2f98c7384ecc.png](https://img-blog.csdnimg.cn/img_convert/5dfee65fe5eca068775d2f98c7384ecc.png)
![d3880a6e7775b00b87c8856a425a10bd.png](https://img-blog.csdnimg.cn/img_convert/d3880a6e7775b00b87c8856a425a10bd.png)
http://www.pythontutor.com/visualize.html#code=dict1%20%3D%20%7B'id'%3A0,'name'%3A''%7D%0Alist1%20%3D%20%5B%5D%0A%0Afor%20i%20in%20range%281,4%29%3A%0A%20%20%20%20dict1%5B'id'%5D%20%3D%20i%0A%20%20%20%20list1.append%28dict1%29%0A%20%20%20%20print%28list1%29&cumulative=true&curInstr=15&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false
对比:
list1 = []
for i in range(1,4):
dict1 = {'id':0,'name':''}
dict1['id'] = i
list1.append(dict1)
print(list1)
输出:
![d5525a552de84c233371d01ffca18e06.png](https://img-blog.csdnimg.cn/img_convert/d5525a552de84c233371d01ffca18e06.png)
![adc76e8a8b01305a536a52316b9a162e.png](https://img-blog.csdnimg.cn/img_convert/adc76e8a8b01305a536a52316b9a162e.png)
http://www.pythontutor.com/visualize.html#code=list1%20%3D%20%5B%5D%0A%0Afor%20i%20in%20range%281,4%29%3A%0A%20%20%20%20dict1%20%3D%20%7B'id'%3A0,'name'%3A''%7D%0A%20%20%20%20dict1%5B'id'%5D%20%3D%20i%0A%20%20%20%20list1.append%28dict1%29%0A%20%20%20%20print%28list1%29&cumulative=true&curInstr=15&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false
dict1 放置于for循环内部后,在每一次 i 被重新赋值时,dict1也再一次重新赋值'='。一旦重新赋值,则id地址不同。
小知识点:
dict1 = {'id':0,'name':''}
list1 = []
for i in range(1,4):
i = dict1['id'] #这一句 ,赋值左右对调后,输出的变化
list1.append(dict1)
print(list1)
输出:
![a42dcd2fae891e75c10ed8c22192211f.png](https://img-blog.csdnimg.cn/img_convert/a42dcd2fae891e75c10ed8c22192211f.png)
![b688c9c96f0b66764bd55a4571245723.png](https://img-blog.csdnimg.cn/img_convert/b688c9c96f0b66764bd55a4571245723.png)
http://www.pythontutor.com/visualize.html#code=dict1%20%3D%20%7B'id'%3A0,'name'%3A''%7D%0Alist1%20%3D%20%5B%5D%0A%0Afor%20i%20in%20range%281,4%29%3A%0A%20%20%20%20i%20%3D%20dict1%5B'id'%5D%20%20%20%0A%20%20%20%20list1.append%28dict1%29%0A%20%20%20%20print%28list1%29&cumulative=true&curInstr=15&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false
将id = 0 赋值给了 i,每次被赋值 i=1,2,3后,i 被 id = 0 覆盖掉了。