2014-05-13 60 views
0

下面显示的变量初始化的不同位置的分支是什么?精神上一个慢夜的位:/双循环变量初始化

for row in range(0,3): 
    for column in range(0,3): 
     block_set = set() 

for row in range(0,3): 
    block_set = set() 
    for column in range(0,3): 
+0

什么是集的? – Dannnno

回答

0

当然会有差异。第一个版本为内部循环的每次迭代创建一个新集,而第二个版本将为外部循环的每个迭代创建一个集。换句话说:第二个版本将创建一个将在内部循环的所有迭代之间共享的集合,而第一个版本每次创建一个新集合,并且添加到该集合的所有数据都将丢失。我不能确定没有看到其他代码,但几乎可以肯定的是,这两个版本中的一个是错误的(这完全取决于你真正想做什么。)

0
for row in range(0,3): 
    for column in range(0,3): 
     block_set = set() # block_set gets reset to an empty set on every iteration of the inner, 'for column' loop. 

for row in range(0,3): 
    block_set = set() # block_set will only be reset once you've finished iterating over the 'for column' loop below, and moved to the next step of the outer, 'for row' loop. 
    for column in range(0,3):