Python 列表乘法:[[...]]*3 生成 3 个在修改时相互镜像的列表 [英] Python list multiplication: [[...]]*3 makes 3 lists which mirror each other when modified

查看:13
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆