Python循环未在xrange中循环

Python循环未在xrange中循环,python,numpy,Python,Numpy,我的程序的一部分要求我检查以确保两个“东西”不重叠(占用相同的空间,即坐标)。由于某些原因,它不会在整个XX范围内循环。我确信这是一个简单的编程错误,但我已经简化为一个简单的MWE,问题依然存在 import numpy as np class foo(object): def __init__(self, yx): self.yx = yx def overlap(fooFun): n = len(fooFun) for i in xrange(n)

我的程序的一部分要求我检查以确保两个“东西”不重叠(占用相同的空间,即坐标)。由于某些原因,它不会在整个XX范围内循环。我确信这是一个简单的编程错误,但我已经简化为一个简单的MWE,问题依然存在

import numpy as np

class foo(object):
    def __init__(self, yx):
        self.yx = yx

def overlap(fooFun):
    n = len(fooFun)
    for i in xrange(n):
        for j in xrange(n):
            if i != j: # Don't check itself
                print '----------------------'
                print 'i,j:', i, j
                print 'Comparing:', fooFun[i].yx, fooFun[j].yx
                if np.array_equal(fooFun[i].yx, fooFun[j].yx) == True:
                    print 'Overlap!'
                    return False
                else:
                    print 'No Overlap!'
                    return True

# Test functions/class
yx = np.array([[0, 0], [0, 1], [0, 0]])
n = len(yx)

fooGroup = []
for i in xrange(n):
    fooGroup.append(foo(yx[i]))

overlap(fooGroup)
其结果是:

----------------------
i,j: 0 1
Comparing: [0 0] [0 1]
No Overlap!

由于某些原因,它不会在i=0、1、2和j=0、1、2之间循环。

A
return
语句导致函数立即结束。它跳过了一切。如果要运行所有循环,需要删除
return
语句。

只有第二个
return
有问题。第一个是在正确的位置。或者在循环应该继续的情况下删除一个。好吧,尽管这很尴尬,我很高兴它现在可以工作了。我创建了一个名为move的标志,它的值改为true或false。似乎工作得很好。@askewchan:我通常用这种方式编程,但我试图消除代码中的任何不确定性。我几乎一整天都在研究这个问题,不想错过一些琐碎的事情(尽管我仍然设法…)