【发布时间】:2021-06-11 16:00:03
【问题描述】:
list_=[1,3,5,7] 对于列表中的 i: 对于范围(i)中的j: 打印(一)
输出-1,2,2,3,3,3,5,5,5,5,5。
【问题讨论】:
标签: python-3.x
list_=[1,3,5,7] 对于列表中的 i: 对于范围(i)中的j: 打印(一)
输出-1,2,2,3,3,3,5,5,5,5,5。
【问题讨论】:
标签: python-3.x
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],每个值将被分配给j一次。
由于第一次外部迭代中的i 为1,所以内部循环首先将运行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 3 3 3 5 5 5 5 5 7 7 7 7 7 7 7
【讨论】:
您提供的输出错误。 你正在做的循环是这样的: 迭代提供的列表,然后打印出该列表中的元素(您当前正在迭代的元素)与该元素的值一样多。
因此,在您的情况下,您将有:1,然后是 3 乘以 3、5 乘以 5 和 7 乘以 7。
我在这里简化了你的逻辑,因为 for j in range(i) 实际上是迭代:0、1、2、... i(其中 i 等于 1、3、5 或 7,具体取决于外部循环迭代)。
【讨论】: