If you have data both in list or generator, you can simplify the calculation by using sum()
, max()
and min()
built-in functions.
>>> mylist = [_ * 3 for _ in range(10)]
>>> mylist
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
>>> max(mylist)
27
>>> min(mylist)
0
>>> sum(mylist)
135
if you use a generator, you need to re-create the iterated objects by re-defined the generator objects.
>>> mygenerator = (_ * 3 for _ in range(10))
>>> mygenerator
<generator object <genexpr> at 0x1035170d0>
>>> max(mygenerator)
27
>>> min(mygenerator) # all objects have been iterated in the previous calculation max
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: min() arg is an empty sequence
>>> mygenerator = (_ * 3 for _ in range(10))
>>> min(mygenerator)
0
>>> sum(_ * 3 for _ in range(10))
135
>>>
and you can also use methods in statistics module:
>>> import statistics
>>> statistics.median_low(_ * 3 for _ in range(10))
12
>>> statistics.median_high(_ * 3 for _ in range(10))
15
>>> statistics.median(_ * 3 for _ in range(10))
13.5
>>> statistics.mean(_ * 3 for _ in range(10))
13.5
>>> statistics.mean(mylist)
13.5
>>> statistics.median_low(mylist)
12
see all statistics methods at https://docs.python.org/3.9/library/statistics.html
read more about generator at https://wiki.python.org/moin/Generators
Top comments (0)