https://github.com/python/cpython/commit/81c3130c51a2b1504842cb1a93732cc03ddbbd79
commit: 81c3130c51a2b1504842cb1a93732cc03ddbbd79
branch: main
author: Raymond Hettinger <[email protected]>
committer: rhettinger <[email protected]>
date: 2024-05-18T01:32:34-05:00
summary:
Minor improvements to the docs for itertools.tee() (gh-119135)
files:
M Doc/library/itertools.rst
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index a19baa3f0e439f..6d33748898361d 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -698,18 +698,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
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]