Pylint заявляют
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 (список (итератор)) не является лучшим выбором, потому что необходимо сделать два цикла. Используя счетчик и постепенное увеличение его я думаю, что это не очень pythonic.
Рассматривали ли вы простую инициализацию n значением None перед запуском цикла?
Определите значение по умолчанию для 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