Removes the last element of the deque and returns it. Time complexity: O(1) @returns topop.val: the value of the node to pop. >>> our_deque1 = Deque([1]) >>> our_popped1 = our_deque1.pop() >>> our_popped1 1 >>> our_deque1 []
(self)
| 239 | self.appendleft(val) |
| 240 | |
| 241 | def pop(self) -> Any: |
| 242 | """ |
| 243 | Removes the last element of the deque and returns it. |
| 244 | Time complexity: O(1) |
| 245 | @returns topop.val: the value of the node to pop. |
| 246 | >>> our_deque1 = Deque([1]) |
| 247 | >>> our_popped1 = our_deque1.pop() |
| 248 | >>> our_popped1 |
| 249 | 1 |
| 250 | >>> our_deque1 |
| 251 | [] |
| 252 | |
| 253 | >>> our_deque2 = Deque([1, 2, 3, 15182]) |
| 254 | >>> our_popped2 = our_deque2.pop() |
| 255 | >>> our_popped2 |
| 256 | 15182 |
| 257 | >>> our_deque2 |
| 258 | [1, 2, 3] |
| 259 | |
| 260 | >>> from collections import deque |
| 261 | >>> deque_collections = deque([1, 2, 3, 15182]) |
| 262 | >>> collections_popped = deque_collections.pop() |
| 263 | >>> collections_popped |
| 264 | 15182 |
| 265 | >>> deque_collections |
| 266 | deque([1, 2, 3]) |
| 267 | >>> list(our_deque2) == list(deque_collections) |
| 268 | True |
| 269 | >>> our_popped2 == collections_popped |
| 270 | True |
| 271 | """ |
| 272 | # make sure the deque has elements to pop |
| 273 | assert not self.is_empty(), "Deque is empty." |
| 274 | |
| 275 | topop = self._back |
| 276 | # if only one element in the queue: point the front and back to None |
| 277 | # else remove one element from back |
| 278 | if self._front == self._back: |
| 279 | self._front = None |
| 280 | self._back = None |
| 281 | else: |
| 282 | self._back = self._back.prev_node # set new back |
| 283 | # drop the last node, python will deallocate memory automatically |
| 284 | self._back.next_node = None |
| 285 | |
| 286 | self._len -= 1 |
| 287 | |
| 288 | return topop.val |
| 289 | |
| 290 | def popleft(self) -> Any: |
| 291 | """ |
no test coverage detected