Skip to content

Commit 53efe5c

Browse files
committed
Added conversion from stream to specific stream
1 parent 4c01f30 commit 53efe5c

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed

stream/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
from .stream import Stream
2-
from .intstream import IntStream
2+
from .numbers import NumberStream

stream/booleans.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from .stream import Stream
1+
from stream import Stream
22
import random
33

44

stream/numbers.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

stream/stream.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,14 @@ def toSet(self):
345345
'''
346346
return set(self.iterable)
347347

348+
def toNumberStream(self):
349+
from .numbers import NumberStream
350+
return NumberStream(self)
351+
352+
def toBooleanStream(self):
353+
from .booleans import BooleanStream
354+
return BooleanStream(self)
355+
348356
def __iter__(self):
349357
'''
350358
Returns an iterator over the elements in this stream.

0 commit comments

Comments
 (0)