Python reversed 반전 시퀀스 및 교체 가능 객체 생성

영문 문서:
reversed(seq)
Return a reverse iterator. seq must be an object which has a __reversed__() method or supports the sequence protocol (the __len__() method and the __getitem__() method with integer arguments starting at 0).  
반전 시퀀스로 새 교체 대상 생성
설명:
  1. 함수 기능은 하나의 서열 대상을 반전시켜 그 원소를 뒤에서 앞으로 전도하여 새로운 교체기를 만드는 것이다.

>>> a = reversed(range(10)) #  range 
>>> a #  
<range_iterator object at 0x035634E8>
>>> list(a)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> a = ['a','b','c','d']
>>> a
['a', 'b', 'c', 'd']
>>> reversed(a) #  
<list_reverseiterator object at 0x031874D0>
>>> b = reversed(a)
>>> b #  
<list_reverseiterator object at 0x037C4EB0>
>>> list(b)
['d', 'c', 'b', 'a']
  2. 매개변수가 시퀀스 객체가 아닌 경우 __ 을 정의해야 합니다.reversed__방법

#  Student __reversed__ 
>>> class Student:
  def __init__(self,name,*args):
    self.name = name
    self.scores = []
    for value in args:
      self.scores.append(value)

      
>>> a = Student('Bob',78,85,93,96)
>>> reversed(a) #  
Traceback (most recent call last):
 File "<pyshell#37>", line 1, in <module>
  reversed(a)
TypeError: argument to reversed() must be a sequence
>>> type(a.scores) #  
<class 'list'>


#  , __reversed__ 
>>> class Student:
  def __init__(self,name,*args):
    self.name = name
    self.scores = []
    for value in args:
      self.scores.append(value)
  def __reversed__(self):
    self.scores = reversed(self.scores)

    
>>> a = Student('Bob',78,85,93,96)
>>> a.scores #  
[78, 85, 93, 96]
>>> type(a.scores)
<class 'list'>

>>> reversed(a) #  
>>> a.scores #  
<list_reverseiterator object at 0x0342F3B0>
>>> type(a.scores)
<class 'list_reverseiterator'>

>>> list(a.scores)
[96, 93, 85, 78]
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기