我是Python的新手,并将矩阵复制到另一个,我正在做:
import copy
matrix1.append(copy.deepcopy(matrix2))
有更好的,可能更短的方式吗?
- 更新:
类型是字符串列表,比如[["asdf", "fdsa"], ["zxcv", "vcxz"]]
,我想将它添加到我的其他列表中,但我不希望它们是相同的引用(我想编辑一个而不更改另一个)。
答案 0 :(得分:2)
您确定需要复制任何内容吗?绝大部分时间,最好不要复制这样的数据。这样做意味着你要改变副本。通常情况下,只做一个新事物而不是改变一个副本,最终会随着程序的发展而减少错误。你打算怎么做这个副本,你确定在创建新事物而不是之后做得更好吗?
如果我要复制 x = [["asdf", "fdsa"], ["zxcv", "vcxz"]]
,我会写copy = [list(ss) for ss in x]
(或map(list, x)
)。这清楚地说明了我在做什么。
当我需要复制数据时,我会避开copy
模块。由于它的工作方式,复制模块可能会失败或给出错误的答案。当你不知道你正在复制的东西的结构或内容时,它主要是有用的,但如果你不知道,你通常有一个比“如何复制它?”更基本的问题,即“我该如何使用它?”
答案 1 :(得分:1)
如果您的矩阵实际上是一个列表,那么这更简单:
import copy
matrix1 = copy.deepcopy(matrix2)
您的代码正在扩展matrix1
,这必须事先存在,除了添加新内容之外,为什么要保留其原始内容?
更新:
是的,你拥有的是最好的方式。
答案 2 :(得分:0)
另一种方式:
original = [[1,2],[3,4]]
copy = [i[:] for i in original]
它有2个以上的尺寸吗?否则请使用深度复制
如果你想追加:
matrix1.append([i[:] for i in original])