-1
我是编程和Python新手。我遇到的问题是删除作为自定义类实例的列表元素。自定义类实例复制
import copy
class some_class:
pass
x = some_class()
x.attr1 = 5
y = some_class()
y.attr1 = 5
z = [x,y]
zcopy = copy.deepcopy(z)
z.remove(zcopy[0])
这将返回: ValueError异常:list.remove(X):在列表
有一个简单的方法,通过使用从deepcopied列表引用删除从列表元素X不是?
编辑:感谢您的回答。我发现了一些使用索引的解决方案。它不漂亮,但它的工作:
import copy
class some_class:
pass
x = some_class()
x.attr1 = 5
y = some_class()
y.attr1 = 5
z = [x,y]
zcopy = copy.deepcopy(z)
del z[zcopy.index(zcopy[0])]
你应该避免这种复制。可能有更简单的方法来分割列表。你想做什么? – 2010-08-10 19:35:20
基本上,我使用的函数,应用时,通过执行计算(某种蒙特卡洛模拟)修改此列表。所以,我想在实例副本上使用函数,并从原始列表中删除答案(从运行模拟中获得答案),以便我可以在修改的列表上再次运行模拟。 list - > function(list of copy) - > answer - > 从原始列表中删除答案 - >函数(删除答案的列表副本) - > ... – declain 2010-08-10 19:54:20
这不是一个很好的设计。你不应该把答案放在同一个列表中。您需要过滤,创建新列表,而不是更新现有列表。你很少需要复制任何东西。你应该发布更多关于你的算法的细节,以便我们帮你修复它。 – 2010-08-10 20:49:26