8

皮林特说

W:6:使用可能未定义的循环变量'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。

4

2 回答 2

13

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

于 2010-02-26T19:41:54.873 回答
3

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

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
于 2010-02-26T19:42:28.280 回答