]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] Minor improvements to the docs for itertools.tee() (gh-119135) (gh-119137)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Sat, 18 May 2024 06:51:20 +0000 (08:51 +0200)
committerGitHub <noreply@github.com>
Sat, 18 May 2024 06:51:20 +0000 (01:51 -0500)
Doc/library/itertools.rst

index 183aa36d927550679c91901e9f3c473c6a255a05..cf2bbf0b1ae60a0230dc4846b8fd41f922a8eb2e 100644 (file)
@@ -690,18 +690,19 @@ loops that truncate the stream.
 
         def tee(iterable, n=2):
             iterator = iter(iterable)
-            empty_link = [None, None]  # Singly linked list: [value, link]
-            return tuple(_tee(iterator, empty_link) for _ in range(n))
+            shared_link = [None, None]
+            return tuple(_tee(iterator, shared_link) for _ in range(n))
 
         def _tee(iterator, link):
-            while True:
-                if link[1] is None:
-                    try:
-                        link[:] = [next(iterator), [None, None]]
-                    except StopIteration:
-                        return
-                value, link = link
-                yield value
+            try:
+                while True:
+                    if link[1] is None:
+                        link[0] = next(iterator)
+                        link[1] = [None, None]
+                    value, link = link
+                    yield value
+            except StopIteration:
+                return
 
    Once a :func:`tee` has been created, the original *iterable* should not be
    used anywhere else; otherwise, the *iterable* could get advanced without