Python 列表乘法:[[...]]*3 生成 3 个在修改时相互镜像的列表 [英] Python list multiplication: [[...]]*3 makes 3 lists which mirror each other when modified
本文介绍了Python 列表乘法:[[...]]*3 生成 3 个在修改时相互镜像的列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为什么会这样?我真的不明白:
<预><代码>>>>P = [ [()]*3 ]*3>>>磷[[(), (), ()], [(), (), ()], [(), (), ()]]>>>P[0][0]=1>>>磷[[1, (), ()], [1, (), ()], [1, (), ()]] 解决方案
您对同一个列表进行了 3 次引用.
<预><代码>>>>a = b = []>>>a.追加(42)>>>乙[42]你想这样做:
P = [[()] * 3 for x in range(3)]
Why this is happening? I don't really understand:
>>> P = [ [()]*3 ]*3
>>> P
[[(), (), ()], [(), (), ()], [(), (), ()]]
>>> P[0][0]=1
>>> P
[[1, (), ()], [1, (), ()], [1, (), ()]]
解决方案
You've made 3 references to the same list.
>>> a = b = []
>>> a.append(42)
>>> b
[42]
You want to do this:
P = [[()] * 3 for x in range(3)]
这篇关于Python 列表乘法:[[...]]*3 生成 3 个在修改时相互镜像的列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文