Below code prints the desired output - 10
values = iter(range(1, 5))
sum(values)
Whereas if I add one more line of code between these lines, output changes to 0
values = iter(range(1, 5))
values_list = list(values)
sum(values)
Below code prints the desired output - 10
values = iter(range(1, 5))
sum(values)
Whereas if I add one more line of code between these lines, output changes to 0
values = iter(range(1, 5))
values_list = list(values)
sum(values)
Python iterators
are exhaustable objects, meaning that they are used them up as you call them.
1rst example:
values = iter(range(1, 5)) # <- iterator is created
sum(values) # <- all of it is used at once
2nd example:
values = iter(range(1, 5)) # <- iterator is created
values_list = list(values) # <- all of it is used at once
sum(values) # <- nothing left to sum :(
If you want to use something over and over again, the iterator
data type is not the one for you; use a list
instead.