mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
Tidied up the implementations of reversed (including the custom ones
for xrange and list objects). * list.__reversed__ now checks the length of the sequence object before calling PyList_GET_ITEM() because the mutable could have changed length. * all three implementations are now tranparent with respect to length and maintain the invariant len(it) == len(list(it)) even when the underlying sequence mutates. * __builtin__.reversed() now frees the underlying sequence as soon as the iterator is exhausted. * the code paths were rearranged so that the most common paths do not require a jump.
This commit is contained in:
parent
d2c36261a2
commit
ef9bf4031a
4 changed files with 59 additions and 29 deletions
|
@ -143,8 +143,8 @@ class TestReversed(unittest.TestCase):
|
|||
|
||||
def test_len(self):
|
||||
# This is an implementation detail, not an interface requirement
|
||||
s = 'hello'
|
||||
self.assertEqual(len(reversed(s)), len(s))
|
||||
for s in ('hello', tuple('hello'), list('hello'), xrange(5)):
|
||||
self.assertEqual(len(reversed(s)), len(s))
|
||||
|
||||
def test_main(verbose=None):
|
||||
testclasses = (EnumerateTestCase, SubclassTestCase, TestEmpty, TestBig,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue