unnecessary-enumerate (FURB148)
Preview (since v0.0.291) · Related issues · View source
Derived from the refurb linter.
Fix is sometimes available.
This rule is unstable and in preview. The --preview flag is required for use.
What it does
Checks for uses of enumerate that discard either the index or the value
when iterating over a sequence.
Why is this bad?
The built-in enumerate function is useful when you need both the index and
value of a sequence.
If you only need the index or values of a sequence, you should iterate over
range(len(...)) or the sequence itself, respectively, instead. This is
more efficient and communicates the intent of the code more clearly.
Known problems
This rule is prone to false negatives due to type inference limitations;
namely, it will only suggest a fix using the len builtin function if the
sequence passed to enumerate is an instantiated as a list, set, dict, or
tuple literal, or annotated as such with a type annotation.
The len builtin function is not defined for all object types (such as
generators), and so refactoring to use len over enumerate is not always
safe.
Example
Use instead: