Python循环不循环通过xrange

时间:2013-09-22 03:48:39

标签: python numpy

我的程序的一部分要求我检查以确保两个“事物”不重叠(占据相同的空间,即坐标)。由于某种原因,它不会遍历整个xranges。我肯定这是一个简单的编程错误,但我已经减少编程到一个简单的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。

1 个答案:

答案 0 :(得分:1)

return语句会导致函数立即结束。它会跳过一切。如果您想要遍历所有循环,则需要删除return语句。