Python 是否仅删除给定列表中的元素?
这方面的新功能:在不绑定两个列表中的元素的情况下,将(数字)元素从一个列表复制到另一个列表的最佳方法是什么?例如:Python 是否仅删除给定列表中的元素?,python,list,Python,List,这方面的新功能:在不绑定两个列表中的元素的情况下,将(数字)元素从一个列表复制到另一个列表的最佳方法是什么?例如: A=[[6,2,-1],[9,-2,3]] B=A[0] del B[0] 还将A设置为[[2,-1],[9,-2,3],即使我希望A保持不变。将B初始化为列表,并使用.append()而不是=/code> A=[[6,2,-1],[9,-2,3]] B = [] B.append(A[0]) 有关更多详细信息,请参见本文,其要点是使用=复制指向内存中列表的指针。而使用appe
A=[[6,2,-1],[9,-2,3]]
B=A[0]
del B[0]
还将
A
设置为[[2,-1],[9,-2,3]
,即使我希望A
保持不变。将B
初始化为列表,并使用.append()
而不是=/code>
A=[[6,2,-1],[9,-2,3]]
B = []
B.append(A[0])
有关更多详细信息,请参见本文,其要点是使用=
复制指向内存中列表的指针。而使用append
可确保复制的是列表中包含的数据,而不是列表指针本身。问题在于,通过这样做
B=A[0]
您只需再次引用A列表
你可能想复制一份清单,比如
B=list(A[0])
如果事例列表中也包含需要复制的对象,则需要深度复制整个列表
import copy
B = copy.deepcopy(A[0])
但是整数不需要这个您的代码将B
作为对a
中第一项的引用。这是一个问题,因为a
中的第一项是一个可变对象,即列表。您要做的是将A[0]
的元素复制到一个新列表中,您将称之为B
:
b = a[0][:] # lowercase variable names according to PEP8
请注意,这仍然只对a[0]
中的项目进行排序。这将适用于您的情况,因为您已经说过这些元素是数字的,这意味着它们是不可变的。但是,如果a[0]
中包含更多嵌套列表,或者其他可变对象而不是数字,那么以后可能会出现同样的问题,再往下一层。请注意您需要全新对象的地方,以及引用足够的地方。这看起来像Python,但为了清晰起见,请格式化您的代码并标记您的问题,好吗?可能会重复Um<代码>B=[A[0]]
(与您正在做的相同)