python新手 关于list二维数组的问题

xiaohehe00 2016-03-28 05:28:58
python新手,求大神指导

l=[]
m=[]
m1=[]
m2=[]
t=input().split()
x=int(t[0])
y=int(t[1])
i=0
while i<x:
m1.append(l)
t=input().split()
for val in t:
m1[i].append(int(val))
print(m1)
i=i+1

这样输出m1的结果 很诡异

为什么更改m1[1]会改变m1[0] ??


...全文
229 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohehe00 2016-03-29
  • 打赏
  • 举报
回复
引用 3 楼 churximi 的回复:
可能你是想要:

m1.append([])
不想中途引起未知变化的话,就把具体的值直接赋进去。 或者,用多个变量,如果能分得清的话。让m1 = [l, n, o, p, q]这样...
明白了 感谢
竹聿Simon 2016-03-28
  • 打赏
  • 举报
回复
可能你是想要:

m1.append([])
不想中途引起未知变化的话,就把具体的值直接赋进去。 或者,用多个变量,如果能分得清的话。让m1 = [l, n, o, p, q]这样...
xiaohehe00 2016-03-28
  • 打赏
  • 举报
回复
引用 1 楼 churximi 的回复:

原因所在:
这一句:m1.append(l) 执行了之后,m1[0]其实是l;
之后l依次追加了三个2:l=[2, 2 ,2]
然后又执行了一次m1.append(l) ,此时m1[0]和m1[1]都是l;
之后l又依次追加了三个2,最终l=[2, 2 ,2, 2, 2, 2]

换句话说,m = [l, l],期间又是对l进行append。
你可以程序中print l看看,l在不断变化。
感谢这位大神!!确实如此 话说这种情况,一般怎么赋值到二维数组中
竹聿Simon 2016-03-28
  • 打赏
  • 举报
回复

原因所在:
这一句:m1.append(l) 执行了之后,m1[0]其实是l;
之后l依次追加了三个2:l=[2, 2 ,2]
然后又执行了一次m1.append(l) ,此时m1[0]和m1[1]都是l;
之后l又依次追加了三个2,最终l=[2, 2 ,2, 2, 2, 2]

换句话说,m = [l, l],期间又是对l进行append。
你可以程序中print l看看,l在不断变化。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧