简体   繁体   中英

How does sum function work in python with for loop

I was using sum function in pyhton, and i am clear about it's general structure , 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.

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))

You can add a list to the sum function so you can make something like this:

test = sum((1,23,5,6,100))
print("output:  ", test) 

And you get 135 .

So with your "for loop" you get a list and put that list to the sum function and you get the sum of the list. The real sum function uses yield insight and use every value and sum them up.

Basically, it is summing 5 repeativily for every "i" on range(5). Meaning, this code is equivalent to n*5, being n the size of range(n).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM