consider-using-generator / R1728ΒΆ
Message emitted:
Consider using a generator instead '%s(%s)'
Description:
If your container can be large using a generator will bring better performance.
Problematic code:
list([0 for y in list(range(10))]) # [consider-using-generator]
tuple([0 for y in list(range(10))]) # [consider-using-generator]
sum([y**2 for y in list(range(10))]) # [consider-using-generator]
max([y**2 for y in list(range(10))]) # [consider-using-generator]
min([y**2 for y in list(range(10))]) # [consider-using-generator]
Correct code:
list(0 for y in list(range(10)))
tuple(0 for y in list(range(10)))
sum(y**2 for y in list(range(10)))
max(y**2 for y in list(range(10)))
min(y**2 for y in list(range(10)))
Additional details:
Removing []
inside calls that can use containers or generators should be considered
for performance reasons since a generator will have an upfront cost to pay. The
performance will be better if you are working with long lists or sets.
For max
, min
and sum
using a generator is also recommended by pep289.
Related links:
Created by the refactoring checker.