【问题标题】:What is a nested for loop?什么是嵌套 for 循环?
【发布时间】:2013-06-12 23:40:49
【问题描述】:

我正在浏览一些“nested for loops”的示例,下面的代码作为示例给出。但这在技术上不是 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

有人可以同意或不同意我的观点吗?

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

【问题讨论】:

  • getPixelAt 的实现本身可能有一个 for 循环,并且该示例表明这个隐藏的 for 循环嵌套在外部循环内,具有相同的算法含义(二次或O(NM)时间而不是线性)。但也有可能是作者搞砸了,或者只是个白痴。你必须告诉我们这个例子来自哪里。

标签: python for-loop nested-loops


【解决方案1】:

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

例如:

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) )

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 2017-03-29
        • 1970-01-01
        相关资源
        最近更新 更多