python - 在 Python 中循环后可靠地读取循环变量

标签 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/

相关文章:

python - 将属性设置为类的属性,其中后者从类方法返回

python - 从编译的 csv 读取时,df.corr 将所有数据显示为 1,即使存在不同的数据

python - 使用 BERT 对单词位置进行序列标记

javascript - 插件如何增强 Anki 的 JavaScript?

Python:像二维数组一样从字典中提取数据

Python时间延迟

python - 用于python回归聚类的库?

python - 修改函数以在 Python 中使用列表理解

python - VBA 的上下文无关语法

python - flask socket CORS