Selaa lähdekoodia

startup: add class PipePair

Fabian Peter Hammerle 1 vuosi sitten
vanhempi
commit
bbe1e5eb87
1 muutettua tiedostoa jossa 17 lisäystä ja 0 poistoa
  1. 17 0
      profile_default/startup/init.py

+ 17 - 0
profile_default/startup/init.py

@@ -196,3 +196,20 @@ assert "123|456\n98|76|54".splitlines() | PipeMap(lambda s: s.split("|")) | Pipe
     ((1, 2, 3), (4, 5, 6)),
     ((9, 8), (7, 6), (5, 4)),
 ]
+
+
+class PipePair(PipeMap):
+    def __init__(
+        self, function: typing.Callable[[typing.Any], typing.Any], axis: int = 0
+    ) -> None:
+        super().__init__(function=lambda a: (a, function(a)), axis=axis)
+
+
+assert range(65, 68) | PipePair(chr) | Pipe(list) == [
+    (65, "A"),
+    (66, "B"),
+    (67, "C"),
+]
+assert range(2, 4) | PipeMap(range) | PipePair(lambda n: n**3, axis=1) | PipeMap(
+    set
+) | Pipe(list) == [{(0, 0), (1, 1)}, {(0, 0), (1, 1), (2, 8)}]