상세 컨텐츠

본문 제목

yield 사용법

Python

by techbard 2016. 4. 28. 18:38

본문

반응형

# 리스트를 만들어서 던짐


def squareList(nums):

result = []

for n in nums: result.append(n * n)

return result


myNums = squareList([1, 2, 3, 4, 5])


print(myNums)


# 결과

[1, 4, 9, 16, 25]


# yield를 사용해 객체를 던짐


def squareList(nums):

for n in nums: yield (n * n)


myNums = squareList([1, 2, 3, 4, 5])


for n in myNums:

print(n, end = ' ')


# 결과

1 4 9 16 25



# flatten list

nested_ls = [[1, 2], [3, 4], [5]]


def flatten(nested):

for sublist in nested:

for ele in sublist:

yield ele


o = flatten(nested_ls)

print(list(o))


# 결과

[1, 2, 3, 4, 5]



# flatten list with comprehension, generator


nested_ls = [[1, 2], [3, 4], [5]]

flat = (x for sublist in nested_ls for x in sublist)


print(list(flat))


# 결과

[1, 2, 3, 4, 5]



# flatten multiple list

def flatten_smart(nested):

try:

for sublist in nested:

for ele in flatten_smart(sublist):

yield ele

except TypeError:

yield nested


nested_ls = [[[1], 2], 3, 4, [5, [6, 7]], 8]


o = flatten_smart(nested_ls)

print(list(o))


# 결과

[1, 2, 3, 4, 5, 6, 7, 8]


반응형

관련글 더보기

댓글 영역