我在這里遇到問題,我需要執行 pop 方法,但我只能使用 SimpleList 中的函式,有什么想法嗎?
我只能修改 RingBuffer 類,所以我不能使用 remove()、pop() 等。
from typing import Optional, List
# (?sl? is instance of ?SimpleList?):
#
# ? ?sl.append(x)? adds to the end of list ?x?,
# ? ?sl.get(i)? returns value of index ?i?,
# ? ?sl.size()? returns current size of list,
# ? ?sl.set(i, x)? sets index ?i? to value ?x?.
class RingBuffer:
def __init__(self, size: int, storage: 'SimpleList'):
self.sl = storage
self.size = size
def push(self, value: int) -> bool:
if self.sl.size() >= self.size:
return False
else:
self.sl.append(value)
return True
# Method ?pop? removes first value from list and returns it.
# If list is empty, method doesn't do anything and returns ?None?.
def pop(self) -> Optional[int]:
if self.sl.size() == 0:
return None
class SimpleList:
def __init__(self) -> None:
self.__items: List[int] = []
def append(self, x: int) -> None:
self.__items.append(x)
def get(self, i: int) -> int:
return self.__items[i]
def set(self, i: int, x: int) -> None:
self.__items[i] = x
def size(self) -> int:
return len(self.__items)
uj5u.com熱心網友回復:
我想你想通了,但只是為了你比較:
def pop(self) -> Optional[int]:
if self.sl.size() == 0:
return None
l = [(self.sl.get(x)) for x in range(self.sl.size())]
self.sl = SimpleList()
[self.sl.append(x) for x in l[1:]]
return l[0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/340110.html
