Рубрики
Без рубрики

Функция Python обратная ()

Функция обратной формы Python, обратная строка в Python, обратная последовательность в Python, Python обратный кортеж, протокол обратной последовательности Python, __reversed__ Code

Автор оригинала: Pankaj Kumar.

Функция с обратным () Python возвращает перевернутый итератор из указанного аргумента последовательности.

Python обращается ()

Синтаксис функции Python обращается ():

reversed(seq)
  • Входной аргумент должен быть последовательностью, например кортеж , Список , строка и т.п.
  • Возвращенный объект имеет тип Реверсированные И это итератор.
  • Мы можем предоставить пользовательский объект в качестве обратной () аргумента функций, если он имеет __reveresed __ () Способ или поддерживает протокол последовательности.
  • Нам нужно реализовать __лен __ () Метод и __getitem __ () Способ с целочисленными аргументами, начиная с 0 для поддержки протокола последовательности.

перевернуты () с последовательностью

Давайте посмотрим на обратную () примеры функций со стандартными объектами последовательности, такие как строка, байты, кортеж, список и т. Д.

def print_iterator(it):
    for x in it:
        print(x, end=' ')
    print('\n')


# reversed string
r = reversed('abc')
print(type(r))
print(r)
print_iterator(r)

# reversed list
r = reversed([1, 2, 3])
print_iterator(r)

# reversed tuple
r = reversed((1, 2, 3))
print_iterator(r)

# reversed bytes
r = reversed(bytes('abc', 'utf-8'))
print_iterator(r)

# reversed bytearray
r = reversed(bytearray('abc', 'utf-8'))
print_iterator(r)

Выход:



c b a 

3 2 1 

3 2 1 

99 98 97 

99 98 97 

Обратите внимание, что байты и ByTearray элементы преобразуются в целое число во время печати на консоли.

обращается () с объектом, имеющим метод __reversed__

# object with __reversed__ method
class Data:
    name = ''

    def __init__(self, n):
        self.name = n

    def __reversed__(self):
        return reversed(self.name)


d = Data('ABC')

r = reversed(d)

print_iterator(r)

Выход: C B A.

изменено () с протоколом последовательного последовательности объекта

# object supporting sequence protocol i.e.
# implementing __len__() and __getitem__ method
class MyTupleWrapper:
    t = ()

    def __init__(self, tu):
        if not isinstance(tu, tuple):
            return ValueError('Only accepts tuple')
        self.t = tu

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

    def __getitem__(self, index):
        return self.t[index]


mt = MyTupleWrapper((1, 2, 3, 4))
r = reversed(mt)
print_iterator(r)

Выход: 4 3 2 1

Ссылка: Официальная документация