πŸš™ iterator(μ΄ν„°λ ˆμ΄ν„°) μ΄ν•΄ν•˜κΈ°

may_soouuΒ·2020λ…„ 8μ›” 23일
0

μ΄ν„°λ ˆμ΄ν„°

iterate : μˆœν™˜ν•˜λ‹€, λ°˜λ³΅ν•˜λ‹€

  • 반볡적으둜 ν•˜λ‚˜ν•˜λ‚˜ κΊΌλ‚΄μ–΄ 처리 κ°€λŠ₯ν•œ μ»¬λ ‰μ…˜μ΄λ‚˜ sequence 듀을 μ΄ν„°λ ˆμ΄ν„° κ°μ²΄λΌκ³ ν•œλ‹€.

  • μ΄ν„°λ ˆμ΄ν„°λŠ” next()ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ν•œ 객체둜, next()ν•¨μˆ˜λŠ” μˆœν™˜ κ°€λŠ₯ν•œ
    객체의 λ‹€μŒ μ›μ†Œλ₯Ό λ°˜ν™˜ν•œλ‹€.

파이썬의 μ΄ν„°λ ˆμ΄ν„°ν˜•
list, dict, set, bytes, tuple, range,

πŸ‘€ μ΄ν„°λ ˆμ΄ν„° 확인해보기

try:
   l = [1,2,3,4]
   iterator = iter(l)
except typeError:
   print('λ¦¬μŠ€νŠΈλŠ” μ΄ν„°λ ˆμ΄ν„° 객체가 μ•„λ‹™λ‹ˆλ‹€')
else:
   print('λ¦¬μŠ€νŠΈλŠ” μ΄ν„°λ ˆμ΄ν„° κ°μ²΄μž…λ‹ˆλ‹€.')
 
 #result : λ¦¬μŠ€νŠΈλŠ” μ΄ν„°λ ˆμ΄ν„° κ°μ²΄μž…λ‹ˆλ‹€.

μœ„μ—μ„œ next() ν•¨μˆ˜λ‘œ κ΅¬ν˜„ν•œ κ°μ²΄λΌλŠ”λ°, next() ν•¨μˆ˜κ°€ 뭘까?
μ•„λž˜ κ°„λ‹¨ν•œ 예제둜 μ‚΄νŽ΄λ³΄μž.

l = [2,4,5,7]                                
print(type(l))  #<class 'list'>               
l_iter = iter(l)                             
print(type(l_iter))  #<class 'list_iterator'> 
print(next(l_iter))  #2                       
print(next(l_iter))  #4
print(l_iter.__next__()) #5

next() ν•¨μˆ˜ ν˜Ήμ€ _ _ next__ λ₯Ό μ΄μš©ν•΄μ„œ iterator 객체의 λ‹€μŒ μš”μ†Œ(element)λ₯Ό 얻을 수 μžˆλ‹€
(언더바 λ‘κ°œλ‹€,, 언더바 λ‘κ°œ μž…λ ₯ν•˜λ©΄ 자꾸 κΈ°μšΈμž„λΌμ„œ ν•œμΉΈ λ„μ–΄μ„œ 썼닀,,πŸ˜‚ )
μ°Έκ³  : https://www.youtube.com/watch?v=kpSChXZMKOc

rangeν˜• 객체

for- in λ¬Έμ—μ„œ μ‚¬μš©λ˜λŠ” rangeν•¨μˆ˜λŠ” rangeν˜• 객체λ₯Ό λ§Œλ“ λ‹€

range(5)               
range(0,5)             
type(range(5))         
r_iter = iter(range(5))
print(next(r_iter)) #0 

πŸ‘€ μ˜ˆμ œν’€κΈ°

λ‹€μŒμ˜ κ°„λ‹¨ν•œ ν‚€λ₯Ό 좜λ ₯ν•˜λŠ” λ”•μ…”λ„ˆλ¦¬μ— λŒ€ν•œ for 문을 while문으둜 κ΅¬ν˜„ν•˜κΈ°

D = {'a':1, 'b':2, 'c':3}
for key in D.keys():
    print(key)
D_keys = iter(D.keys())
while True:
    try:
        print(next(D_keys))
    except StopIteration as e:
        break
  • μ—¬κΈ°μ„œ 근데 κΆκΈˆν•œ 점이 μžˆλ‹€. stopiteration 을 쓰지 μ•Šκ³ , except break 을 해도 닡은 λ˜‘κ°™μ΄ λ‚˜μ˜€λŠ”λ°, μ–Έμ œ μ–Έμ œ μ•ˆμ“°λŠ”μ§€ μ •ν™•ν•œ 닡을 μ°Ύμ§€λŠ” λͺ»ν–ˆλ‹€ πŸ˜‚ ꡬ글링 ν•΄λ³΄λ‹ˆ λŒ€λΆ€λΆ„ μ“°λŠ” 것 같은데,, κ΄€μš©μ μœΌλ‘œ μ“°λŠ” 걸까?!
profile
back-end 개발자

0개의 λŒ“κΈ€