Python 2.7 Python中矩阵的初始化与求值
我想知道,是否有人可以用python解释这种行为 在python中以以下方式初始化矩阵时Python 2.7 Python中矩阵的初始化与求值,python-2.7,Python 2.7,我想知道,是否有人可以用python解释这种行为 在python中以以下方式初始化矩阵时 rows,cols = 3,3 visited = [[False]*rows]*cols visited[0][0] = True print visited [[True, False, False], [True, False, False], [True, False, False]] 相当于 visited = [] for i in range(rows): visited.appen
rows,cols = 3,3
visited = [[False]*rows]*cols
visited[0][0] = True
print visited
[[True, False, False], [True, False, False], [True, False, False]]
相当于
visited = []
for i in range(rows):
visited.append([False]*cols)
visited[0][0] = True
print visited
[[True, False, False], [False, False, False], [False, False, False]]
我不确定,为什么在第一个案例中,第一个col的所有元素都被初始化为true。奥斯瓦尔德枪杀了美国第35任总统,然后某个约翰·菲茨杰拉德·肯尼迪(John Fitzgerald Kennedy)死了。为什么?因为他们是同一个人
[[False]*rows]*cols
将首先构造一个数组[False,False,False]
-我们称之为John-然后构造另一个数组,其中包含三个John。不是三份约翰的副本-三份约翰的参考资料
相同原理的简单演示:
a = [False]
b = a
a[0] = True
b[0]
# => True
b
的[False]
不仅仅是a
的[True]
:只有一个[True]
,有两个名称(a
和b
)
在该可视化中可以很容易地看到差异(单击“前进”逐步完成程序):
[[False] * rows for _ in range(cols)]
奥斯瓦尔德枪杀了美国第35任总统,然后某个约翰·菲茨杰拉德·肯尼迪死了。为什么?因为他们是同一个人
[[False]*rows]*cols
将首先构造一个数组[False,False,False]
-我们称之为John-然后构造另一个数组,其中包含三个John。不是三份约翰的副本-三份约翰的参考资料
相同原理的简单演示:
a = [False]
b = a
a[0] = True
b[0]
# => True
b
的[False]
不仅仅是a
的[True]
:只有一个[True]
,有两个名称(a
和b
)
在该可视化中可以很容易地看到差异(单击“前进”逐步完成程序):
[[False] * rows for _ in range(cols)]