在我的 Python 代码中,我有以下问题:我必须多次复制同一个对象,然后将每个副本传递给修改它的函数。我尝试使用 copy.deepcopy,但它的计算成本确实很高,然后我尝试使用 itertools.repeat(),但这是一个坏主意,因为在那之后我必须修改对象。所以我写了一个简单的方法来复制一个对象,简单地返回一个具有相同属性的新对象:
def myCopy(myObj):
return MyClass(myObj.x, myObj.y)
问题是这也太低效了:我要做大约 6000 次,而且需要 10 多秒!那么,是否存在更好的方法来做到这一点?
要复制和修改的对象是表,它是这样创建的:
def initialState(self):
table = []
[table.append(Events()) for _ in xrange(self.numSlots)]
for ei in xrange(self.numEvents - 1):
ei += 1
enr = self.exams[ei]
k = random.randint(0, self.numSlots - 1)
table[k].Insert(ei, enr)
x = EtState(table)
return x
class Event:
def __init__(self, i, enrollment, contribution = None):
self.ei = i
self.enrollment = enrollment
self.contribution = contribution
class Events:
def __init__(self):
self.count = 0
self.EventList = []
def getEvent(self, i):
return self.EventList[i].ei
def getEnrollment(self, i):
return self.EventList[i].enrollment
def Insert(self, ei, enroll = 1, contribution = None):
self.EventList.append(Event(ei, enroll, contribution))
self.count += 1
def eventIn(self, ei):
for x in xrange(self.count):
if(self.EventList[x].ei == ei):
self.EventList[x].enrollment += 1
return True
return False