我不明白下面代码第二个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循环中如何受到第一个循环的影响?有继承吗?请原谅新手。
答案 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)