Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python类索引器_Python_Class - Fatal编程技术网

Python类索引器

Python类索引器,python,class,Python,Class,我写这门课是为了把两行织在一起 class CoordinatRow(object): def __init__(self): self.coordinaterow = [] def add_coordinaterow(self, coordinate): self.coordinaterow.append(coordinate) def weave(self,other): lijst = [] for i in range(len(self.c

我写这门课是为了把两行织在一起

class CoordinatRow(object):

def __init__(self):
    self.coordinaterow = []

def add_coordinaterow(self, coordinate):
    self.coordinaterow.append(coordinate)    


def weave(self,other):
    lijst = []
    for i in range(len(self.coordinaterow)):
        lijst.append(self.coordinaterow[i])
        lijst.append(other.coordinaterow[i]) 
    self.coordinaterow = lijst
    return self.coordinaterow
我向对象添加坐标,如下所示:

def process_row(line):                                 
  temp_coordinate_row = CoordinatRow()
  rij = line.split()
  for coordinate in rij:
     coor = process_coordinate(coordinate)
     temp_coordinate_row.add_coordinaterow(coor)
  return temp_coordinate_row
当我想通过这样做将两行添加到一起时:

def split_and_add(invoer):                             
    rij = invoer.split('=')
    rows = []
    for line in rij:
        rows.append(process_row(line))
    return rows


bestand = file_input()
rows = split_and_add(bestand)
for row in range(0,len(rows)-1):
    rows[row].weave(rows[row+1])
但是,我得到以下错误:

rows[row].weave(rows[row+1])  
lijst.append(other.coordinaterow[i]) 
IndexError: list index out of range

如何解决此问题?

您只需执行以下操作即可解决此问题:

for i in range(len(self.coordinaterow)):
    lijst.append(self.coordinaterow[i])
    try:
        lijst.append(other.coordinaterow[i])
    except IndexError:
        pass

你有两行代码导致了这个问题?是lijst.append(other.coordinaterow[i])导致了这个问题,所以你的自我列表比你的其他列表长。是的,就是这样,你知道我如何修改函数使其工作吗?以后,请复制并粘贴你的异常,并进行回溯,不是手动近似。谢谢,错误消失了,但是当我尝试打印结果时,我看起来是这样的:[,]你知道是什么原因导致的吗?你是如何以及在哪里打印结果的?我将输出对象放在一个变量中并打印该变量不确定你在做什么,但如果你使用该
变量
并执行
打印变量[0].coordinaterow
这能满足你的期望吗?@Pieter:这是一个单独的问题,你真的应该单独问,而不是作为第一个问题解决方案的后续评论。但答案很简单:您还没有为
坐标
类定义
\uuu repr\uuuuuuu
\uuuu str\uuuuuu
,因此这是默认的字符串表示形式。