【问题标题】:Nested for loop - range嵌套 for 循环 - 范围
【发布时间】:2021-04-30 15:08:55
【问题描述】:

初学者/菜鸟在这里: 如果有人可以简单地帮助解释实际发生的事情(代码背后),将不胜感激 试了试,为什么第二个脚本不输出apple?

one = ["apple", "banana", "republic"]

for i in range(len(one)):
    for j in range(i + 1):
        print(one[i])

输出

   apple
   banana
   banana
   republic
   republic
   republic

one = ["apple", "banana", "republic"]

for i in range(len(one)):
    for j in range(i):
        print(one[i])

输出不包含苹果

   banana
   republic
   republic

【问题讨论】:

  • 您注意到这种模式了吗?您的第一个示例打印 1 次、2 次、3 次。您的第二个示例打印 0 次、1 次、2 次。

标签: python for-loop nested-loops


【解决方案1】:

在大多数编程语言中这是一个相当基本的概念:范围和索引从 0 开始,不包括“最后一个”元素。

所以range(len(one)) 将包含数字 0、1 和 2。

那么在您的第二个代码示例中,外循环的第一步中i 将是0。然后内部循环会说“好的,现在循环 j 从 0 开始并一直运行到(但不包括)0”。这意味着,实际上,根本不要运行。

您可以通过输入print(list(range(0)) 来检查它,这应该是一个 列表。

这就是为什么在你的第二个例子中苹果没有被打印出来。

【讨论】:

    【解决方案2】:

    谢谢大家的帮助,我现在明白背后的原因了。感谢您抽出宝贵时间向我解释

    【讨论】:

      【解决方案3】:

      循环的第一次运行:

      for i in range(len(one)):
          for j in range(i):
              print(one[i])
      

      i = 0 => j = 0 to 0:这意味着“j”循环条件已经完成,应该使用i的下一次迭代。并且不会输出一个[i=0]项。

      【讨论】:

        猜你喜欢
        • 2013-11-25
        • 1970-01-01
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-25
        • 2019-12-22
        • 2018-04-03
        相关资源
        最近更新 更多