๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

 

 

 

iterable

 

  • ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ํƒ€์ž…์˜ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • List, Tuple, Dictionary, Set, String, Bytes, Range ๋“ฑ์˜ ์ˆœํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Iterable ๊ฐ์ฒด๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„ , collections.Iterable์— ์†ํ•œ ๊ฐ์ฒด(Instance)์ธ์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
    • isinstance() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
import collections

list = [1, 3, 5, 7, 9]
print(isinstance(list, collections.Iterable))   # True


A = 300   # int
print(isinstace(A, collections.Iterable))       # False

 

iterableํ•œ ํƒ€์ž…์€ ๋‹จ์ˆœํžˆ for ๋ฌธ์œผ๋กœ๋„ ์ˆœํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 

list = [1, 3, 5, 7, 9]

for i in list:
	print(i)       # 1 3 5 7 9

 

 

 

iter(), next()

 

  • iter() ํ•จ์ˆ˜๋Š” ๊ฐ์ฒด์˜ iterator๋ฅผ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.
  • iter() ํ•จ์ˆ˜๋Š” ๋ฐ˜๋ณต์„ ๋๋‚ผ ๊ฐ’(sentinel)์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • next() ํ•จ์ˆ˜๋Š” iterator์—์„œ ๊ฐ’์„ ์ฐจ๋ก€๋Œ€๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
    • ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•ด๋†“์ง€ ์•Š์œผ๋ฉด, iterator์˜ ๊ฐ’์„ ๋‹ค ๊ฐ€์ ธ์˜จ ํ›„์— ํ˜ธ์ถœ ์‹œ "StopIteration"์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
list = [1, 2, 3]
it = iter(list)

for i in range(len(list) + 1):  # ๋งˆ์ง€๋ง‰ ๋ฐ˜๋ณต๋ฌธ์—์„œ StopIteration ๋ฐœ์ƒ
    print(next(it))

 

 

iter() ํ•จ์ˆ˜์— ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(callable)์™€ ๋ฐ˜๋ณต์„ ๋๋‚ผ ๊ฐ’(sentinel)์„ ๋„ฃ์–ด์„œ ๋ณ„๋‹ค๋ฅธ ์กฐ๊ฑด๋ฌธ(if)์—†์ด ๋ฐ˜๋ณต์„ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

import random

for i in iter(lambda : random.randint(0, 10), 5):  # ์ˆซ์ž 5๊ฐ€ ๋‚˜์˜ฌ ์‹œ ์ค‘์ง€ 
    print(i, end = ' ')

 

 

 

next() ํ•จ์ˆ˜์— ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•ด๋†“์œผ๋ฉด, ๋ฐ˜๋ณต์ด ๋๋‚˜๋”๋ผ๋„ StopIteration์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.

list = [1, 2, 3]
it = iter(list)

for i in range(len(list) + 1):
    print(next(it, 100))

 

StopIteration์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ๊ธฐ๋ณธ๊ฐ’์ด ์ถœ๋ ฅ

 

 

enumerate

 

  • ๋ช‡ ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์ธ์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ
  • ํŠœํ”Œ(Tuple) ํ˜•ํƒœ๋กœ (์ธ๋ฑ์Šค ๋ฒˆํ˜ธ, ์›์†Œ)๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
Months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', \
          'August', 'September', 'October', ' November', 'December']

i = 0
for item in enumerate(Months):
    print("{0}".format(item), end = ' ')
    i += 1
    if i % 4 == 0:
        print()
print()

 

 

 

enumerate( ... , 1)์ฒ˜๋Ÿผ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์‹œ์ž‘ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. 

for item in enumerate(Months, 1):  # ์‹œ์ž‘ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ 1๋ถ€ํ„ฐ ์‹œ์ž‘
	...

 

 

 

ํŠœํ”Œ(Tuple)์„ ๋ฆฌํ„ดํ•œ๋‹ค๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•˜์—ฌ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

for index, value in enumerate(Months):
    print("index : {}, value : {}".format(index, value))

 

 

์ฐธ๊ณ 

728x90
๋ฐ˜์‘ํ˜•