#WARNING: BAD PRACTICE! DON'T USE THIS CODE!
for row_index in xrange(len(instruments)):
instrument = instruments[row_index]
for column_index in xrange(len(instrument)):
self.table.SetValue(row_index, column_index, instrument[column_index])
I need to explicity call SetValue (its
on a PyGridTableBase) for each value -
as this code is invoked via a twisted
deferred method - my brain is not much
good at looping/enumeration in a neat
way..... – Ben Hughes
根本问题不在于这个循环。在
基本问题是:
1)这个
instruments
结构来自何处,为什么需要重新组织它?在2)您调用的
self.table
结构是什么?在3)你打算怎么处理这个
self.table
结构?在在回答这些问题之前,示例Python代码没有可用于评估的上下文。只是密码。在
您所调用的
row
不是一个行,而是一个行索引。instrument
是一行。除此之外:如果您拥有的唯一工具是一个
SetValue(row_index, column_index, value)
方法,并且该方法不仅仅帮助复制instruments
的结构,并且instruments
集合如您的代码所描述的那样,那么没有更好的方法。它已经比或任何歪曲事实的行为。在
否则,您可能会对
import copy; self.table = copy.copy(instruments)
或者甚至(正如SilentGhost所建议的那样)self.table = instruments
您已经在评论中提到这个循环是异步函数的一部分(在twisted框架中)。在这种情况下,您不想长时间阻止:
因此,所有行都是并行分配的。在
注:
i
和row
的后期绑定。在这种情况下使用(lambda i=i, row=row: ...)()
。在task.coiterate()
使用全局对象,因此可以同时进行多个表更新(这可能不是您想要的)。在以下是@SilentGhost' answer(已删除):
我指的是本休斯的评论:
相关问题 更多 >
编程相关推荐