填空题:列表生成中关于名字绑定的秘密 (高教社,《Python编程基础及应用》习题5-5)
列表生成中关于名字绑定的秘密 (高教社,《Python编程基础及应用》习题5-5)
<br>
运行下述程序,会发现结果与预期不太一致:对m\[0]\[1]的修改同时也导致的m\[1]\[1]及m\[2]\[1]的修改。请分析原因。提示:可以打印id(m[0]),id[m[1]],id[m[2]]出来看看。
python
m = [[0]*4]*3 #生成一个3行4列的矩阵,全部元素为0
m[0][1] = 99 #0行1列元素赋值99
for x in m:
print(x)
执行结果第1行:<br>
执行结果第2行:<br>
执行结果第3行:<br>
id(m[0]) 是否等于 id(m[1])及id(m[2]) (是/否): <br>
说明:列表的每个元素事实上也是一个名字,列表生成时,因为名字绑定的原因,m\[0], m\[1], m\[2]事实上指向同一个子列表。
<br>**拼尽全力还是不会?参考B站习题讲解**<br>
哔哩哔哩up主:[海洋饼干叔叔](https://space.bilibili.com/384177380) [Python课程](https://www.bilibili.com/video/BV1kt411R7uW/)
[Python习题](https://www.bilibili.com/video/BV1iL411t7UZ/)
[简洁的C和C++](https://www.bilibili.com/video/BV1it411d7zx/)
答案:
第1空:[0, 99, 0, 0] ||
第2空:[0, 99, 0, 0] ||
第3空:[0, 99, 0, 0] ||
第4空:是 ||
<br>
运行下述程序,会发现结果与预期不太一致:对m\[0]\[1]的修改同时也导致的m\[1]\[1]及m\[2]\[1]的修改。请分析原因。提示:可以打印id(m[0]),id[m[1]],id[m[2]]出来看看。
python
m = [[0]*4]*3 #生成一个3行4列的矩阵,全部元素为0
m[0][1] = 99 #0行1列元素赋值99
for x in m:
print(x)
执行结果第1行:<br>
执行结果第2行:<br>
执行结果第3行:<br>
id(m[0]) 是否等于 id(m[1])及id(m[2]) (是/否): <br>
说明:列表的每个元素事实上也是一个名字,列表生成时,因为名字绑定的原因,m\[0], m\[1], m\[2]事实上指向同一个子列表。
<br>**拼尽全力还是不会?参考B站习题讲解**<br>
哔哩哔哩up主:[海洋饼干叔叔](https://space.bilibili.com/384177380) [Python课程](https://www.bilibili.com/video/BV1kt411R7uW/)
[Python习题](https://www.bilibili.com/video/BV1iL411t7UZ/)
[简洁的C和C++](https://www.bilibili.com/video/BV1it411d7zx/)
答案:
第1空:[0, 99, 0, 0] ||
第2空:[0, 99, 0, 0] ||
第3空:[0, 99, 0, 0] ||
第4空:是 ||