这方面的新知识:在不绑定两个列表中的元素的情况下,将元素从一个列表复制到另一个列表的最佳方法是什么?例如:
A=[[6,2,-1],[9,-2,3]]
B=A[0]
del B[0]我还会将A设置为[[2,-1],[9,-2,3]],即使我希望A保持不变。
发布于 2013-05-24 04:00:00
问题是,通过这样做
B=A[0]您只需再次引用A列表即可
您可能想要复制该列表,如下所示
B=list(A[0])如果case list还包含需要复制的对象,则需要深入复制整个列表
import copy
B = copy.deepcopy(A[0])但是对于整数,你不需要这样做
发布于 2013-05-24 04:04:29
您的代码使B仅仅是对A中第一个项目的引用。这是一个问题,因为A中的第一项是一个可变对象,即一个列表。您要做的是将A[0]的元素复制到一个名为B的新列表中
b = a[0][:] # lowercase variable names according to PEP8请注意,这仍然只对a[0]中的项进行shallow copies。这将适用于您的情况,因为您已经说过这些元素是数字的,这意味着它们是不可变的。但是,如果a[0]或其他可变对象中包含了更多的嵌套列表,而不是数字,那么以后可能会出现相同的问题,再往下一层。只需小心注意哪些地方需要全新的对象,哪些地方引用是足够的。
发布于 2013-05-24 03:59:28
将B初始化为列表并使用.append()而不是=
A=[[6,2,-1],[9,-2,3]]
B = []
B.append(A[0])有关更多详细信息,请参阅此post,但它的要点是使用=复制指向内存中列表的指针。而使用append确保被复制的是列表中包含的数据,而不是列表指针本身。
https://stackoverflow.com/questions/16722650
复制相似问题