3

我正在浏览一些“嵌套 for 循环”的示例,下面的代码作为示例给出。但这在技术上不是一个for循环吗?

xLimits = range(getWidth(pic))
for x in xLimits:
    pixel = getPixelAt(pic, x, 0)
    setColor(pixel, green)

嵌套看起来不会像这样吗?

for x in xLimits:
    for y in yLimits:
        code
        code
        code

有人可以同意或不同意我吗?

我知道这可能无关紧要,但如果我没有以正确的方式看待这个问题,我想知道为什么。

4

3 回答 3

2

嵌套循环(任何类型)是循环中的循环。重要的是要意识到每次外循环迭代都会重新运行内循环。

例如:

for i in xrange(3):
    for j in xrange(2):
        print 'i={0} j={1}'.format(i,j)

输出:

i=0 j=0    
i=0 j=1
i=1 j=0    <-- inner loop restarts
i=1 j=1
i=2 j=0    <-- inner loop restarts
i=2 j=1

所以你的理解是完全正确的。第一个示例不是嵌套循环,而第二个示例是。

您可能考虑从循环中调用带有for循环的函数for,即“嵌套 for 循环”,尽管我永远不会这样称呼它:

def foo(r):
    for i in r:
        do_something()

for x in xrange(20):
    foo( xrange(x) )
于 2013-06-12T23:44:56.513 回答
0

如您所想,嵌套的 for 循环是另一个 for 循环中的 for 循环。您给出的第一个示例不是嵌套 for 循环,但第二个示例是。

于 2013-06-12T23:42:27.613 回答
0

正如您所说,底部示例是嵌套的 for 循环。我猜该信息的作者对另外两个称为函数 [getPixelAt() 或 setColor(,)] 的了解更多,它们构成了它们作为 for 循环,因此使示例嵌套,至少从效率(Big O)的角度来看.

于 2013-06-12T23:44:13.363 回答