본문 바로가기

컴퓨터/파이썬 공부정리

[Python] flatten 구현 - iterator generator

import time

def flatten(lst):
    for item in lst:
        if isinstance(item, list):
            yield from flatten(item)
        else:
            yield item

if __name__ == "__main__":
    start = time.time()
    data = [1,[-2,[[4]], [0,5], [],3],[4],2,7] * 1000000
    sum = 0
    for e in flatten(data):
        print(e, end=' ')
        sum += e
        if sum > 10:
            break
    print('\nResult :', sum)
    print(f'time : {(time.time()-start) * 1000}')
#경과 시간 : 8ms(data를 1,000,000배하여 진행)