<分区>
在循环后读取循环变量是否安全(使用 Python 2)?我的目的是检查循环中完成了多少次迭代。
下面是展示这个想法的代码:
a=[1,2,3,4,5]
for i in range(len(a)):
if a[i] == 2:
break
print i # output is 1, is it safe to read i here?
标签 python
<分区>
在循环后读取循环变量是否安全(使用 Python 2)?我的目的是检查循环中完成了多少次迭代。
下面是展示这个想法的代码:
a=[1,2,3,4,5]
for i in range(len(a)):
if a[i] == 2:
break
print i # output is 1, is it safe to read i here?
最佳答案
是的,在那里阅读就可以了。这是因为当您在内部创建一个 for
循环时,它有一种机制可以为您创建 indexer
(在您的例子中是 i
) 然后每次都给它赋新值,一个一个增加它。因此,您可以在 for
循环之后使用 i
。因此之后:
a=[1,2,3,4,5]
for i in range(len(a)):
if a[i] == 2:
break
i
并没有真正被丢弃。要删除 i
,您可以使用 del
关键字:
a=[1,2,3,4,5]
for i in range(len(a)):
if a[i] == 2:
break
del i #deleted here
print i # now this will give you error!
虽然要替换 is,您只需要重新定义它:
a=[1,2,3,4,5]
for i in range(len(a)):
if a[i] == 2:
break
i = [] #now this is a list, not an integer anymore
print i # now this will give you different result: []
类似地,例如,如果您在 if block 中创建一个列表:
if i == 0: #suppose you really enter this block
a = [] #a is created here
a.append(b) #but a can be used here, assuming the previous if is really entered
这就是 Python 的工作原理。
一些相关的帖子:
关于python - 在 Python 中循环后可靠地读取循环变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35836090/