Search code examples
pythonpython-3.xsumgeneratoriterable

How does sum function work in python with for loop


I was using sum function in python, and i am clear about it's general structure sum(iterable, start) , but i am unable to get the logic behind the following code

test = sum(5 for i in range(5) )
print("output:  ", test) 

output: 25

Please can anyone describe what is happening here, basically here 5 is getting multiplied with 5, and same pattern is there for every sample input.


Solution

  • Your code is shorthand for:

    test = sum((5 for i in range(5)))
    

    The removal of extra parentheses is syntactic sugar: it has no impact on your algorithm.

    The (5 for i in range(5)) component is a generator expression which, on each iteration, yields the value 5. Your generator expression has 5 iterations in total, as defined by range(5). Therefore, the generator expression yields 5 exactly 5 times.

    sum, as the docs indicate, accepts any iterable, even those not held entirely in memory. Generators, and by extension generator expressions, are memory efficient. Therefore, your logic will sum 5 exactly 5 times, which equals 25.

    A convention when you don't use a variable in a closed loop is to denote that variable by underscore (_), so usually you'll see your code written as:

    test = sum(5 for _ in range(5))