Python中循环后读取循环变量的可靠方法

2024-03-29 09:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

在循环之后读取循环变量安全吗(使用python2)?我的目的是检查循环中完成了多少次迭代。你知道吗

下面是代码来说明这个想法:

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?

Tags: to代码in目的foroutputlenif
2条回答

您可以这样做,这样做也很好,因为在本例中,i的值只在执行内部循环之前递增。这会使这段代码更难阅读,但它会完成工作。变量i是在与for循环相同的范围内创建的。如果您给出的示例代码是整个文件,那么当文件存在时i将超出范围。如果您给出的代码示例在函数中,i将在函数中创建,然后在函数返回/退出时超出范围。你知道吗

另一种方法是在Python中使用循环的for... in构造和zip方法,并保留一个变量:

for element, i in zip(a, range(len(a)):
    if element == 2:
        index = i

最后,您将设置一个名为index的新变量,而不依赖循环变量。你知道吗

是的,在那里读很好。这是因为当你在内部创建一个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!

如果要替换,只需重新定义:

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块中创建列表:

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的工作原理。你知道吗

部分相关岗位:

相关问题 更多 >