Fra*_*eng 1 python initialization list
matrix = [[0]*1005]*1005
Run Code Online (Sandbox Code Playgroud)
和
matrix = [[0 for _ in range(1005)] for _ in range(1005)]
Run Code Online (Sandbox Code Playgroud)
我发现如果我使用前者初始数组,并运行matrix[1][1] = 1
它将每行中的第二列设置为1.第二列按照我的意愿执行.我想不通为什么?
[[0] * 1005] * 1005
将创建一个包含1005个零的数组的1005个引用数组.它们都是相同的参考,因此更改一个将改变所有其他参考.但是,您可以将工作代码缩短到此:
matrix = [[0] * 1005 for _ in range(1005)]
Run Code Online (Sandbox Code Playgroud)
这几乎是任何人都有关于列表乘法语法的唯一警告,实际上:)
归档时间: |
|
查看次数: |
83 次 |
最近记录: |