不了解Python中的嵌套For循环

时间:2019-03-06 15:26:34

标签: python for-loop nested-loops

我不明白下面代码第二个for循环中的i的工作原理。

di = [96, 15, 33, 87]
for i in range(len(di)):
    total = di[i]
    for j in range(i+1,len(di)):
        print(i)
0
0
0
1
1
2

为什么输出0,0,0,1,1,2。我在第二个for循环中如何受到第一个循环的影响?有继承吗?请原谅新手。

3 个答案:

答案 0 :(得分:0)

在编程语言中,变量可在范围内使用。当您使用新变量开始for循环时,直到您结束该变量为止,该变量才可用。

在您开始学习python的过程中,真正的好习惯之一是阅读正式文档。 https://docs.python.org/3/tutorial/controlflow.html

答案 1 :(得分:0)

为帮助您理解,请尝试以下操作:

di = [96, 15, 33, 87]
for i in range(len(di)):
    print("first loop, i =", i)
    total = di[i]
    for j in range(i+1,len(di)):
        print("second loop, j =", j)
        print("second loop, i =", i)

两个循环中的i相同。每次外部循环运行时,它就会运行内部循环,直到“ for”语句完成。

答案 2 :(得分:0)

xvfb-run -a -e /tmp/some/log/file.log java -jar /home/user/somejava.jar 是4。因此循环

len(di)

将重复4次。由于for i in range(len(di)): 的工作方式(从下限(如果未指定,默认为0,到下限默认为0)到下限1),在第一次重复中,range将为i,{ {1}}在第二个重复中,依此类推。要计算出0生成多少个对象(在这种情况下,1会重复执行多少次),您只需执行range(x, y)。因此,在这种情况下:for i in range(x, y)

循环

number of repetitions = y - x

将重复len(di) - 0 (default lower bound) = 4命令for j in range(i+1, len(di)): print(i) 次。请注意,print(i)由外部循环定义。因此,在

的第一个循环中
len(di) - (i + 1)

i等于for i in range(len(di)): ,因此i命令将执行0次-将打印print(i) 3次。在第二个循环中,4 - (0+1) = 3等于1,因此它将被打印2次,依此类推。因此,发生了什么,将其格式化为代码以提高可读性:

i(=0)