2010-02-26 83 views
4

pylint的说pylint的:使用可能未定义循环变量 'N'

 
W: 6: Using possibly undefined loop variable 'n' 

与此代码:


iterator = (i*i for i in range(100) if i % 3 == 0) 

for n, i in enumerate(iterator): 
    do_something(i) 

print n 

因为如果迭代是空的(例如[])n是未定义的,确定。但我喜欢这个伎俩。如何以安全的方式使用它?

我认为使用len(list(iterator))不是最好的选择,因为你必须做两个循环。使用一个计数器,并增加它,我认为它不是pythonic。

回答

6

您是否考虑过在运行循环之前仅将n初始化为None?

+1

EMM ......是的,这是非常简单的 – 2010-02-26 19:56:13

3

for语句之前定义n默认值:

iterator = (i*i for i in range(100) if i % 3 == 0) 

n=None 
for n, i in enumerate(iterator): 
    do_something(i) 

print n