Python - Iterables, Generator & yield

Sung Jun Jin·2020년 7월 14일
0
post-thumbnail

Iterables

iterable에 대한 python 공식문서의 정의는 다음과 같다

An iterable is any Python object capable of returning its members one at a time permitting it to be iterated over in a for-loop

해석을 해보면 for loop을 통해 안에 있는 member들을 차례대로 반환 할 수 있는 object라는 뜻이다. 예를 들면 파이썬의 list, tuple, string이 iterable에 속한다고 할 수 있다. 또한 순서가 없는 collection, dictionary, set 또한 iterable 하다고 할 수 있다.

list

>>> my_list = [1,2,3]
>>> 
>>> for i in my_list:
...     print(i)
... 
1
2
3

dictionary

>>> for key,values in my_dict.items():
...     print(key,end=" ")
...     print(values, end=" ")
... 
a 1 b 2 c 3

Generators & yield

Generator에 대한 python 공식문서의 정의는 다음과 같다

A function which returns an iterator. It looks like a normal function except that it contains yield statements for producing a series of values usable in a for-loop or that can be retrived one at a time with the next() function.

iterator를 반환하는 함수이지만 일반 함수와 다른 점은 return 구문 대신 yield 구문을 사용한다는 것이다. Generator의 예시를 들어보자

def generator(n):
	i = 0
	while i < n:
		yield i
		i = i + 1

Generator 함수 내에서 yield 구문을 사용하면, for문으로 멤버들을 꺼내는 방법 이외에도 next() 함수를 사용해 iterator의 모든 멤버들을 차례대로 하나씩 return 받을 수 있다.

>>> x = generator(5)
>>> next(x)
0
>>> next(x)
1
>>> next(x)
2
>>> next(x)
3
>>> next(x)
4
profile
주니어 개발쟈🤦‍♂️

0개의 댓글