Загрузка данных


def getitem(self, idx):
    """lst[idx]"""
    return self._get_node(idx).val

def _get_node(self, idx):
    if idx < 0:
        idx += self.size
    if idx < 0 or idx >= self.size:
        raise IndexError("out of range")
    if idx < self.size // 2:
        cur = self.head
        for _ in range(idx):
            cur = cur.next
    else:
        cur = self.tail
        for _ in range(self.size - 1 - idx):
            cur = cur.prev
    return cur