2017-08-30 106 views
0

我有两个函数在这里显示。 for_coordinates_outside_nest(tag_coord)defining_polygon_outside_nest(tag_data)。我想在这里做的是,如果函数返回True,我想追加函数返回的数字ants_inroi_outsidenest。代码工作正常。但是,当我尝试打印ants_inroi_outsidenest,我得到:将元素附加到python中的空列表中

this-[971] this-[971, 977] this-[971, 977, 728] this-[971, 977, 728, 740]

我要的是一个单独的列表this-[971,977,728,740]。任何建议将非常感激。

def for_coordinates_outside_nest(tag_coord): 
    poly = [1000,2100,80,1900] 
    bbPath = mplPath.Path(np.array([[poly[0],poly[1]],[poly[3],poly[1]],[poly[3],poly[2]],[poly[0],poly[2]]])) 
    if bbPath.contains_point((tag_coord)): 
     return True 
    else: 
     return False 

def defining_polygon_outside_nest(tag_data): 
    ants_in_arena = [] 
    ants_inroi_outsidenest = [] 
    for id, (x,y) in tag_data: 
     ants_in_arena.append(id) 
     if for_coordinates_outside_nest((x,y)) is True: 
      ants_inroi_outsidenest.append(id) 
      print "this-" + str(ants_inroi_outsidenest) 
    return ants_inroi_outsidenest 
+1

你'print'声明必须比你的代码缩进进一步片断 –

+0

@Chris_Rands我想这样做,它打印相同。 – mudaliyar

+0

我的意思是应该缩进(就像编辑前的原始代码,我相信会产生你想要的输出)。试想一下,你想在循环结尾“印刷”而不是每次迭代 –

回答

1

实际上,该列表包含您需要的元素。它是一个1-dim列表,其中包含您在循环中添加的值。
你的问题只是打印功能在循环中。因此,每次将元素添加到列表中时,它都会打印整个列表,其中第一个循环包含1个元素,第二个元素包含2个元素,等等。
你应该这样做:

def defining_polygon_outside_nest(tag_data): 
    ants_in_arena = [] 
    ants_inroi_outsidenest = [] 
    for id, (x,y) in tag_data: 
     ants_in_arena.append(id) 
     if for_coordinates_outside_nest((x,y)) is True: 
      ants_inroi_outsidenest.append(id) 
    print "this-" + str(ants_inroi_outsidenest) 
    return ants_inroi_outsidenest