【python】关于二维列表建立的问题

论坛 期权论坛 脚本     
匿名技术用户   2020-12-22 06:09   11   0

一、问题

如果使用以下代码建立二维列表的话,的确可以建立一个3*3的二维列表

m = n = 3
test = [[0] * m] * n
print("test =", test)

但是如果对列表的第一个值进行修改

test[0][0] = 233
print("test =", test)

则会发现,将test打印出来的结果如下:

test = [[233, 0, 0], [233, 0, 0], [233, 0, 0]]

它会将连带的test[1][0]、test[2][0]也全部都修改成233,导致这种现象形成的原因是由于每一行的第一列的元素都指向同一个指针。

二、解决方案

1、使用如下代码进行二维列表的创立即可:

test = [[0 for i in range(m)] for j in range(n)]

2、使用numpy模块中的list:

import numpy as np
test = np.zeros((m, n), dtype=np.int)

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP