【发布时间】:2019-12-16 23:20:41
【问题描述】:
我尝试模拟细胞分裂,我想将属于细胞谱系的细胞存储在二维数组中。 因此,二维数组的行元素是属于具有“事件”类中描述的属性的谱系的一部分的单元格。
一切正常,但在我的代码末尾,我无法正确存储类元素。
请帮忙,我怎样才能有效地将这些值存储在 Python3 中。
这是课程:
class Events:
# Initializer / Instance Attributes
def __init__(self, level, cellNum, Type, time, timeStep, ID, gen, mutNum, childID):
self.level = level
self.cellNum = cellNum
self.Type = Type
self.time = time
self.timeStep = timeStep
self.ID = ID
self.gen = gen
self.mutNum = mutNum
self.childID = childID
这里我存储二叉树的叶子(细胞分裂树):
Counter = 0
for i in range(N):
for k in range(Counter,len(Data)):
if int(Data[k][0]) == n:
LeafArray.append(Events(Data[k][0],Data[k][1],Data[k][2],Data[k][3],Data[k][4],Data[k][5],k,0,0))
Counter = k+1
break
在这里我定义了我想要存储血统数据的 LinArray,并且 我对沿袭进行排序,因为单元格的 childID 与其从叶节点开始的子 ID 相同:
LinArray = []
for i in range(len(LeafArray)):
lincounter = 0
LinArrayin = []
LinArrayin.append(LeafArray[i])
for j in reversed(range(len(EventVertices))):
if EventVertices[j].childID==LinArrayin[lincounter].gen:
lincounter+=1
LinArrayin.append(EventVertices[j])
if LinArrayin[lincounter].gen == 0:
#print(lincounter)
LinArray.append(LinArrayin)
print (LinArray[0][1].gen) #error is here
LinArrayin.clear()
break
最奇怪的是当我在上面突出显示的行收到错误时, 这是一个索引错误:
Traceback(最近一次调用最后一次): 文件“HOT_LinTrace.py”,第 131 行,在 打印(LinArray[0][4].gen) IndexError: 列表索引超出范围
它还返回该索引的正确值。
另外奇怪的是,当我想在代码末尾打印出 LinArray 的存储元素时,它只返回索引错误消息。
请帮忙:)
【问题讨论】:
标签: python arrays list class indexing