mirror of
https://github.com/micropython/micropython.git
synced 2026-01-06 12:10:13 +01:00
py/objdeque: Expand implementation to be doubly-ended and support iter.
Add `pop()`, `appendleft()`, and `extend()` methods, support iteration and indexing, and initializing from an existing sequence. Iteration and indexing (subscription) have independent configuration flags to enable them. They are enabled by default at the same level that collections.deque is enabled (the extra features level). Also add tests for checking new behavior. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
committed by
Damien George
parent
cd8eea2ae9
commit
7dff38fdc1
@@ -63,3 +63,52 @@ try:
|
||||
~d
|
||||
except TypeError:
|
||||
print("TypeError")
|
||||
|
||||
|
||||
# Same tests, but now with pop() and appendleft()
|
||||
|
||||
d = deque((), 2)
|
||||
print(len(d))
|
||||
print(bool(d))
|
||||
|
||||
try:
|
||||
d.popleft()
|
||||
except IndexError:
|
||||
print("IndexError")
|
||||
|
||||
print(d.append(1))
|
||||
print(len(d))
|
||||
print(bool(d))
|
||||
print(d.popleft())
|
||||
print(len(d))
|
||||
|
||||
d.append(2)
|
||||
print(d.popleft())
|
||||
|
||||
d.append(3)
|
||||
d.append(4)
|
||||
print(len(d))
|
||||
print(d.popleft(), d.popleft())
|
||||
try:
|
||||
d.popleft()
|
||||
except IndexError:
|
||||
print("IndexError")
|
||||
|
||||
d.append(5)
|
||||
d.append(6)
|
||||
d.append(7)
|
||||
print(len(d))
|
||||
print(d.popleft(), d.popleft())
|
||||
print(len(d))
|
||||
try:
|
||||
d.popleft()
|
||||
except IndexError:
|
||||
print("IndexError")
|
||||
|
||||
d = deque((), 2)
|
||||
d.appendleft(1)
|
||||
d.appendleft(2)
|
||||
d.appendleft(3)
|
||||
d.appendleft(4)
|
||||
d.appendleft(5)
|
||||
print(d.pop(), d.pop())
|
||||
Reference in New Issue
Block a user