在Python中复制字符串列表的最佳方法是什么?

时间:2011-08-11 12:31:06

标签: python matrix

我是Python的新手,并将矩阵复制到另一个,我正在做:

import copy
matrix1.append(copy.deepcopy(matrix2))

有更好的,可能更短的方式吗?

- 更新:

类型是字符串列表,比如[["asdf", "fdsa"], ["zxcv", "vcxz"]],我想将它添加到我的其他列表中,但我不希望它们是相同的引用(我想编辑一个而不更改另一个)。

3 个答案:

答案 0 :(得分:2)

  1. 您确定需要复制任何内容吗?绝大部分时间,最好不要复制这样的数据。这样做意味着你要改变副本。通常情况下,只做一个新事物而不是改变一个副本,最终会随着程序的发展而减少错误。你打算怎么做这个副本,你确定在创建新事物而不是之后做得更好吗?

  2. 如果我要复制 x = [["asdf", "fdsa"], ["zxcv", "vcxz"]],我会写copy = [list(ss) for ss in x](或map(list, x))。这清楚地说明了我在做什么。

  3. 当我需要复制数据时,我会避开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])