@R_M_69

Как можно реализовать решение с обратной индексацией?

Я показал решение следующей задачи:
Реализуйте класс ReversedMyList, который будет при создании объекта принимать список и предоставлять доступ к элементам этого списка в обратном порядке.

r = ReversedMyList(lst) — создание экземпляра.

len(r) — количество элементов в обратном списке.

r[i] — доступ к элементам в обратном порядке. Если элемент не может быть возвращен, то возвращаем None.


Мой код:
class ReversedMyList:
    def __init__(self, data):
        self.data = data

    def __len__(self):
        return len(self.data)

    def __getitem__(self, index):
        self.data.reverse()
        if self.data and index <= len(self.data)-1:
            return self.data[index]
        else:
            return None


Меня попросили реализовать решение без метода reverse, с помощью отрицательной индексации. Идей реализации у меня нет, может Вы сможете мне подсказать, как реализовать это с помощью отрицательной индексации. Знаю, что логика реализации должна быть в блоке кода функции __getitem__
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
grantur5707
@grantur5707
Full Stack Web Developer
Используйте отрицательную индексацию вместо reverse():

class ReversedMyList:
    def __init__(self, data):
        self.data = data

    def __len__(self):
        return len(self.data)

    def __getitem__(self, index):
        if 0 <= index < len(self.data):
            return self.data[-index - 1]
        else:
            return None
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Maksim_64
@Maksim_64
Data Analyst
Ну поработай с индексом да и все.
Самое примитивное
def __getitem__(self, index):
        try:
            return self.data[-(index+1)]
        except IndexError:
            return None
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы