python中慎用乘号*快速初始化list

python中乘号*常被用于快速初始化list,但有一个隐患:

被乘号复制的对象都指向同一个空间。当被复制对象为不可变类型时,不会出现问题,但当当被复制对象为可变类型时,若有一个引用改变这块存储空间,其他引用该存储空间的列表也会发生改变。

用id()可以验证其指向的空间

所以更安全的创建初始化list的办法为用for的方式:

注意:

用for创建矩阵的时候,内部为i,外部为j,则访问时对应的下标为list[j][i],是一个4*3的矩阵,而不是3*4的

 

 

 

参考:

https://blog.csdn.net/tongda530/article/details/88089495

 

posted @ 2019-07-30 15:06  sbj123456789  阅读(863)  评论(0编辑  收藏  举报