@@ -77,12 +77,36 @@ def random():
7777 '''
7878 return NumberStream (Stream .generate (random .random ))
7979
80+ @staticmethod
81+ def range (start , end , step = 1 ):
82+ return NumberStream (Stream .iterate (start , lambda i : i + step ).takeWhile (lambda x : x <= end ))
83+
8084 def __init__ (self , _stream ):
8185 if isinstance (_stream , Stream ):
8286 self .iterable = _stream .iterable
8387 else :
8488 self .iterable = _stream
8589
90+ def average (self ):
91+ _sum = 0
92+ _count = 0
93+ for elem in self :
94+ _sum += elem
95+ _count += 1
96+ return _sum / _count
97+
98+ def takeWhileSmallerThan (self , maximum ):
99+ return self .takeWhile (lambda x : x < maximum )
100+
101+ def takeWhileSmallerOrEqualThan (self , maximum ):
102+ return self .takeWhile (lambda x : x <= maximum )
103+
104+ def takeWhileGreaterThan (self , minimum ):
105+ return self .takeWhile (lambda x : x > minimum )
106+
107+ def takeWhileGreaterOrEqualThan (self , minimum ):
108+ return self .takeWhile (lambda x : x >= minimum )
109+
86110 def smallerThan (self , maximum ):
87111 return self .filter (lambda x : x < maximum )
88112
@@ -112,3 +136,9 @@ def sqrt(self):
112136
113137 def log (self ):
114138 return self .map (math .log )
139+
140+ def sin (self ):
141+ return self .map (math .sin )
142+
143+ def cos (self ):
144+ return self .map (math .cos )
0 commit comments