你能帮我理解这个循环吗?

时间:2021-03-14 01:15:24

标签: python-3.x

list_=[1,3,5,7] 对于我在 list_ 中: 对于范围(i)中的 j: 打印(i)

输出-1,2,2,3,3,3,5,5,5,5,5 .

2 个答案:

答案 0 :(得分:2)

list_ = [1,3,5,7]
for i in list_:
   for j in range(i):
       print(i)

发生了什么:

  1. 在第一个外循环 (for i in list_) 中,您将遍历 list_ 中的所有四个元素。这意味着值 i 在第一次迭代中为 1,第二次为 3,第三次为 5,最后一次为 7。
  2. 在第二个内部循环 (for j in range(i)) 中,它创建了一系列数字。这一次,for 的运行方式有所不同,它将不再获取范围的数字,而是将其中的代码重复 i 次。
<块引用>

例如,for j range(3) 的意思是,根据定义,我正在创建一个长度为 3 的迭代器,其中元素的范围从 0 到 2:[0,1,2],每个值都将分配给 {{1} } 一次。

由于第一次外部迭代中的 j 为 1,因此内部循环首先将运行 i 一次。然后,外循环中的其他剩余数字也会发生同样的情况。看一看:

print(1)
for j in range(1)
    print(1)      # outputs 1
for j in range(3)
    print(3)      # outputs 3 3 3
for j in range(5)
    print(5)      # outputs 5 5 5 5 5

最后,正确的输出应该是:for j in range(7) print(7) # outputs 7 7 7 7 7 7 7

答案 1 :(得分:1)

您提供的输出是错误的。 你正在做的循环是这样的: 迭代提供的列表,然后打印出该列表的元素(您当前正在迭代的)与元素值一样多的次数。

因此,在您的情况下,您将有:1,然后 3 次 3、5 次 5 和 7 次 7。

我在这里简化了你的逻辑,因为 j in range(i) 实际上是迭代:0, 1, 2, ... i (其中 i 等于 1、3、5 或 7,具体取决于外部循环迭代)。

相关问题