ropering / Study

0 stars 0 forks source link

[Python] Generator - reversed 직접 구현하기 #28

Open ropering opened 2 years ago

ropering commented 2 years ago
'''
generator - reversed 직접 구현하기
배운 것 
- 제너레이터 함수의 reference를 변수에 저장 후, next()를 사용할 때 넣어야 yield가 저장되어 차례차례 실행될 수 있다.
- list[::-1] : 값을 반전시킨다 (reverse)
'''

li = [3,44,1,5,6345]

# generator - reversed 직접 구현하기 - 1
def _reversed(li):
  for i in list(range(len(li)-1, 0-1, -1)):
    yield li[i]

print(list(_reversed(li)))

# generator - reversed 직접 구현하기 - 2
def _reversed(li):
  for i in li[::-1]:
    yield i

print(list(_reversed(li)))

# generator - reversed 직접 구현하기 - 테스트
'''def _reversed(li):
  print(1)
  yield 'a'
  print(2)
  yield 'b'
  print(3)
  yield 'c'
  print(4)
  yield 'd'

print(next(_reversed(li)))
print(next(_reversed(li)))
print(next(_reversed(li)))
print(next(_reversed(li)))'''
# 1 a 1 a 1 a 1 a 
# 즉 처음부터 다시 실행된다. (새로운 객체가 할당되는 것으로 예상한다)

# generator - reversed 직접 구현하기 - 테스트
'''output = _reversed(li)

print(next(output))
print(next(output))
print(next(output))
print(next(output))'''
# 1 a 2 b 3 c 4 d
# 함수를 변수로 담아 그 변수를 사용해야 yield 기록이 저장된다 (같은 객체를 사용하기 때문이라고 예상한다)