双循环变量初始化

时间:2014-05-13 03:38:17

标签: python variables for-loop nested-loops

下面显示的变量初始化的不同位置有什么后果?精神上有点慢夜:/

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):

2 个答案:

答案 0 :(得分:0)

当然会有分歧。第一个版本为内部循环的每次迭代创建一个新集合,而第二个版本将为外部循环的每次迭代创建一个集合。

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

答案 1 :(得分: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):