【问题标题】:Python 3. Understand multiple for loops (indention)Python 3. 理解多个 for 循环(缩进)
【发布时间】:2017-06-11 18:00:37
【问题描述】:

我有一个列表,我使用了一个 for 循环,代码在这个链接中: Python For Loop code. (2 for loops in one)

当最后两个循环相互缩进时,3 个 for 循环的结果会是什么样子。 Here is an example of what I mean.我也想要一个解释。我正在寻找的解释类似于上面第一个链接中的解释。 图 2 的代码是:

hugehairypants = ['huge', 'hairy', 'pants']
for i in hugehairypants:
    print(i)
    for j in hugehairypants:
        print(j)
        for f in hugehairypants:
            print(f) 

(编辑:我想我现在明白了) 如果您有四个 for 循环怎么办????????????????????????
例如:

hugehairypants = ['huge', 'hairy', 'pants']
for i in hugehairypants:
    print(i)
    for j in hugehairypants:
        print(j)
        for f in hugehairypants:
            print(f)
            for z in hugehairypants:
                print(z)

【问题讨论】:

  • 找出答案的最佳方法是自己运行 :-)
  • 我自己运行过。但是理论上我不明白。 @Idanmel
  • 请编辑您的问题并将代码添加为(格式化)文本而不是图像。
  • 手工浏览 - 假装你是计算机并按顺序执行每一步,用铅笔和纸来跟踪 - 有时这样做很有启发性

标签: python list loops for-loop while-loop


【解决方案1】:

此代码将返回输出

huge
huge
huge
hairy
pants
hairy
huge
hairy
pants
pants
huge
hairy
pants
hairy
huge
huge
hairy
pants
hairy
huge
hairy
pants
pants
huge
hairy
pants
pants
huge
huge
hairy
pants
hairy
huge
hairy
pants
pants
huge
hairy
pants

真是一口。无论如何,本质上,您所做的是说“对于 hugehairypants 中的每个元素 (i),打印元素 (i),并且对于 hugehairypants 中的每个元素 (j),打印元素 (j) 并为hugehairypants 中的每个元素 (f) 都打印元素 (f)。

再一次,那是一大口。将其视为某种树可能会有所帮助。

For each element (i) in huge hairy pants
|
|-> Print the element i
|--> For each element (j) in huge hairy pants
|
|---> Print the element j
|---> For each element (f) in huge hairy pants
|
|----> Print the element f

【讨论】:

  • 但是哪个 for 循环(i、j 或 f)打印了什么?
  • 您可以通过将 print 语句从 print(i) 更改为 print(i, "First loop") 等等来轻松地看到这一点。
  • 这就是我的理解:一开始(i)打印出巨大的,(j)打印出巨大的,(f)打印出巨大的,毛茸茸的和裤子。但我不明白之后会发生什么。
  • 之后,第二个循环继续。之后你会变得“毛茸茸”。然后第三个循环再次开始,你会得到“巨大的毛裤”。然后第二个循环继续,依此类推。完成后,第一个循环将继续,第二个循环将重新开始。
  • 听起来像“火箭科学”。这张图片在这里:i.stack.imgur.com/3pFDY.jpg 以一种简单的方式解释了两个 for 循环,但是当我尝试 3 个 for 循环时,逻辑听起来不正确。
【解决方案2】:

为了更好地理解输出,我重写了代码:

  1. 第 1 步:执行带有 i 的 for 循环并选择“巨大”
  2. 第 2 步:执行带有 j 的 for 循环并选择 'huge'
  3. 第 3 步:用于 执行带有 f 的循环,直到打印出所有 3 个元素 即“巨大”、“毛茸茸”、“裤子”

然后,循环返回J,选择hairy,返回'step-3',继续循环,直到for循环i下的所有元素都完成!

ughhairypants = ['huge', 'hairy', 'pants']
for i in hughhairypants:
    print('I-'+i)
    for j in hughhairypants:
        print('J-'+j)
        for f in hughhairypants:
            print('F-'+f)

Output:
I-huge
J-huge
F-huge
F-hairy
F-pants
J-hairy
F-huge
F-hairy
F-pants
J-pants
F-huge
F-hairy
F-pants
I-hairy
J-huge
F-huge
F-hairy
F-pants
J-hairy
F-huge
F-hairy
F-pants
J-pants
F-huge
F-hairy
F-pants
I-pants
J-huge
F-huge
F-hairy
F-pants
J-hairy
F-huge
F-hairy
F-pants
J-pants
F-huge
F-hairy
F-pants

【讨论】:

  • 这是否意味着 (i) 在 (j) 和 (f) 完成后打印出来。
  • 正确,参考输出
【解决方案3】:

但是哪个 for 循环(i,j 或 f)打印了什么?

i starts with `huge`
j starts with `huge`
f loops `huge, hairy, pants`
j jumps to `hairy`
f loops `huge, hairy, pants`
j jumps to `pants`
f loops `huge, hairy, pants`
i jumps to `hairy`
j starts with `huge`
f loops `huge, hairy, pants`
j jumps to `hairy`
f loops `huge, hairy, pants`
j jumps to `pants`
f loops `huge, hairy, pants`
i jumps to `pants`
j starts with `huge`
f loops `huge, hairy, pants`
j jumps to `hairy`
f loops `huge, hairy, pants`
j jumps to `pants`
f loops `huge, hairy, pants`
loop end

我希望这是有用的:)

【讨论】:

  • 非常有用。坦克。我是说谢谢
  • @Faraz4567 如果你觉得有用,别忘了采纳答案 =)
  • @Faraz4567 在答案的左边,投票下面有一个勾,你点击它接受答案
猜你喜欢
  • 1970-01-01
  • 2017-09-11
  • 2013-10-15
  • 2023-03-11
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
相关资源
最近更新 更多