需要帮助来了解Python嵌套循环

时间:2019-03-06 02:18:46

标签: python for-loop nested-loops

我在下面的代码中无法理解第二个for循环:

di = [4,5,6]
for i in range(len(di)):
    total = di[i]
    for j in range(i+1,len(di)):
        total += di[j]
        curr_di = total / ((j-i+1)**2)

我无法想象for j in range(i+1,len(di)):中发生的事情,特别是i+1部分使我感到困惑。第一个循环中的i对第二个循环有什么影响?

2 个答案:

答案 0 :(得分:0)

第一个循环只是循环遍历列表di中可用的索引。对于该循环中的每个条目,第二个循环然后检查di的其余部分。

因此,在第一次迭代中,我们正在检查值4。然后,第二个循环将遍历列表,从该位置开始,一直运行到末尾(它将检查项56)。

在第二次迭代中,我们将检查条目5,然后在第二个循环中遍历列表的其余部分(在本例中为6)。有道理吗?

正如评论员所指出的,打印语句是您的朋友。这是带有一些打印语句的示例,以显示ij的变化:

di = [4,5,6,7]
for i in range(len(di)):
  print(f"i: {i}")
  total = di[i]
  for j in range(i+1, len(di)):
    print(f" - j: {j}")
    total += di[j]
    curr_di = total / ((j-i+1)**2)

输出:

i: 0
 - j: 1
 - j: 2
 - j: 3
i: 1
 - j: 2
 - j: 3
i: 2
 - j: 3
i: 3

答案 1 :(得分:0)

这是典型的“ 2组合”循环。列表中的每个项目(索引i)都与后续的每个项目(索引j)一起处理。

看起来像序列处理来计算部分和:

total = ∑ (i = 1..n)(∑ (j = i..n) a [j])