BLUELOVETH 1 год назад
Родитель
Сommit
6bf645d738
5 измененных файлов с 27 добавлено и 0 удалено
  1. 7 0
      docs/modules/itertools.md
  2. 0 0
      include/pocketpy/_generated.h
  3. 13 0
      python/itertools.py
  4. 1 0
      src/pocketpy.cpp
  5. 6 0
      tests/86_itertools.py

+ 7 - 0
docs/modules/itertools.md

@@ -0,0 +1,7 @@
+---
+icon: package
+label: itertools
+---
+
+### `itertools.zip_longest(a, b)`
+

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
include/pocketpy/_generated.h


+ 13 - 0
python/itertools.py

@@ -0,0 +1,13 @@
+def zip_longest(a, b):
+    a = iter(a)
+    b = iter(b)
+    while True:
+        ai = next(a)
+        bi = next(b)
+        if ai is StopIteration and bi is StopIteration:
+            break
+        if ai is StopIteration:
+            ai = None
+        if bi is StopIteration:
+            bi = None
+        yield ai, bi

+ 1 - 0
src/pocketpy.cpp

@@ -1606,6 +1606,7 @@ void VM::post_init(){
     _lazy_modules["typing"] = kPythonLibs_typing;
     _lazy_modules["datetime"] = kPythonLibs_datetime;
     _lazy_modules["cmath"] = kPythonLibs_cmath;
+    _lazy_modules["itertools"] = kPythonLibs_itertools;
 
     try{
         CodeObject_ code = compile(kPythonLibs_builtins, "<builtins>", EXEC_MODE);

+ 6 - 0
tests/86_itertools.py

@@ -0,0 +1,6 @@
+from itertools import zip_longest
+
+a = [1, 2, 3]
+b = [2]
+
+assert list(zip_longest(a, b)) == [(1, 2), (2, None), (3, None)]

Некоторые файлы не были показаны из-за большого количества измененных файлов