Автор оригинала: 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
Ссылка: Официальная документация