程序的一部分要求我检查以确保两个“事物”不重叠(占用相同的空间,即坐标)。由于某种原因,它不会遍历整个xrange。我敢肯定这是一个简单的编程错误,但是我已经简化为编写一个简单的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。
一条return
语句使函数立即结束。它会跳过所有内容。如果要遍历所有循环,则需要删除return
语句。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句