list_=[1,3,5,7] 对于我在 list_ 中: 对于范围(i)中的 j: 打印(i)
输出-1,2,2,3,3,3,5,5,5,5,5 .
答案 0 :(得分:2)
list_ = [1,3,5,7]
for i in list_:
for j in range(i):
print(i)
发生了什么:
for i in list_
) 中,您将遍历 list_
中的所有四个元素。这意味着值 i
在第一次迭代中为 1,第二次为 3,第三次为 5,最后一次为 7。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,具体取决于外部循环迭代)。