对于新手的问题,很抱歉,但是有人请给我解释一下这个嵌套的for循环的内部工作原理。
v,w = 2,4
for v in range(v):
for w in range(w):
print('v=',v,'w=',w)如果我这样运行它,输出将如下所示:
v= 0 w= 0
v= 0 w= 1
v= 0 w= 2
v= 0 w= 3
v= 1 w= 0
v= 1 w= 1
v= 1 w= 2如果我这样运行它,它可以工作,但至少看起来不像Pythonic式的。
v,w = 2,4
for v in range(v):
for w in range(w):
print('v=',v,'w=',w)
w = 4能否请一些人解释一下如何最好地解决这个问题?
发布于 2018-02-13 01:06:21
我认为它会“过早”停止(缺少最后一个输出v= 1 w= 3),因为在最后一个循环运行之前,分配给'w‘变量的最后一个值是3
对,是这样。
可以解释一下如何最好地解决这个问题吗?
不要为两种不同的含义重复使用相同的局部变量名:
n_v, n_w = 2, 4
for v in range(n_v):
for w in range(n_w):
print('v=', v, 'w=', w)发布于 2018-02-13 01:13:22
在我看来,这里要注意的最有趣的事情是,只要你停留在相同的for v in range(v)迭代中,range(w)就不会更新。这就是为什么你会得到:
v = 0, w = 0
v = 0, w = 1
v = 0, w = 2
v = 0, w = 3但是,在第二次迭代中,当您的v变为1时,range(w)将使用新的值(现在为3 )获取range(w)重新定义的。这就是为什么你会得到:
v = 1, w = 0
v = 1, w = 1
v = 1, w = 2例如,@wim说,解决这个问题很简单;你只需要使用不同的变量:
for i in range(v):
for j in range(w):
# do your thing上面的一个副作用是,下面的代码确实执行了5次,尽管它写起来很糟糕:
v = 5
for v in range(v):
# do your thing发布于 2018-02-13 01:07:51
嗨,彼得,看wim的答案,他是对的。
重写代码如下:
v,w = 2,4
for v1 in range(v):
for w1 in range(w):
print('v=',v1,'w=',w1)https://stackoverflow.com/questions/48751764
复制相似问题