| 
 | 
 
 
 楼主 |
发表于 2020-12-30 22:12:21
|
显示全部楼层
 
 
 
我好像理解为什么了. 
 
对于for函数而言, 每循环一次, 它就会把这一次循环的值给打印出来. 例如: 
 
for i in range(10): 
        print(i) 
 
那么, 我们就会得到: 
 
0 
1 
2 
3 
4 
5 
6 
7 
8 
9 
 
同样的道理. 在这一段代码里: 
 
triangle = [] 
for i in range(10): 
        triangle.append([]) 
 
当i = 0时, 进行第1次循环, append在triangle这个列表中添加了第1个元素, 这个元素就是[], 此时triangle = [[]]. for循环将它打印出来: 
 
[[]] 
 
当i = 0时, 进行第2次循环, append在triangle这个列表中又添加了1元素[], 此时triangle = [[],[]]. for循环将它打印出来: 
 
[[],[]] 
 
以此类推 
 
当for循环结束的时候, triangle = [[],[],[],[],[],[],[],[],[],[]] 然而, 此时输入triangle, 会发现屏幕上出现的是: 
 
[[]] 
[[], []] 
[[], [], []] 
[[], [], [], []] 
[[], [], [], [], []] 
[[], [], [], [], [], []] 
[[], [], [], [], [], [], []] 
[[], [], [], [], [], [], [], []] 
[[], [], [], [], [], [], [], [], []] 
[[], [], [], [], [], [], [], [], [], []] 
 
这并不意味着此时屏幕上打印的内容就是triangle的值, 就像上面第一个for循环把0~9都打印下来一样, 程序只是把for循环10次执行的结果一次性打印出来了而已. 为了验证我的想法是不是对的. 我重新再输入triangle, 按回车. 这才是执行完for循环以后, triangle此时此刻的值. 
 
[[], [], [], [], [], [], [], [], [], []] 
 
哈哈哈, 茅塞顿开! 本质上还是对for循环理解不到位.  
 
 |   
 
 
 
 |