Iterator
for
문을 이용해 오브젝트들의 개체에 접근하는 방법
ex)
for element in [1, 2, 3]: print(element) for element in (1, 2, 3): print(element) for key in {'one':1, 'two':2}: print(key) for char in "123": print(char) for line in open("myfile.txt"): print(line, end='')
Generator
yield
명령어를 통해Iterator
를 쉽고 강력하게 사용할 수 있는 도구
yield
함수(반복문)의 내용을 실행하다가
yield
문을 만나면 해당 데이터를 반환
ex)
def reverse(data): for index in range(len(data)-1, -1, -1): yield data[index] >>> print(reverse('golf')) <generator object reverse at 0x0000024F9A487F90> >>> for char in reverse('golf'): ... print(char) ... f l o g
Generator Expressions
generator
함수를 따로 선언하지 않고 간결하게 리스트, 집합 등을 선언할 수 있는 표현식
ex)
>>> sum(i*i for i in range(10)) # sum of squares 285 >>> xvec = [10, 20, 30] >>> yvec = [7, 5, 3] >>> sum(x*y for x,y in zip(xvec, yvec)) # dot product 260 >>> unique_words = set(word for line in page for word in line.split()) >>> valedictorian = max((student.gpa, student.name) for student in graduates) >>> data = 'golf' >>> list(data[i] for i in range(len(data)-1, -1, -1)) ['f', 'l', 'o', 'g']