파이썬의 다양한 기능을 사용하면, for 문을 사용하지 않고도 리스트를 이어붙일 수 있습니다.
my_list = [[1, 2], [3, 4], [5, 6]]
# 방법 1 - sum 함수
answer = sum(my_list, [])
# 방법 2 - itertools.chain
import itertools
list(itertools.chain.from_iterable(my_list))
# 방법 3 - itertools와 unpacking
import itertools
list(itertools.chain(*my_list))
# 방법4 - list comprehension 이용
[element for array in my_list for element in array]
# 방법 5 - reduce 함수 이용1
from functools import reduce
list(reduce(lambda x, y: x+y, my_list))
# 방법 6 - reduce 함수 이용2
from functools import reduce
import operator
list(reduce(operator.add, my_list))
# 방법 7 - numpy 라이브러리의 flatten 이용
import numpy as np
np.array(my_list).flatten().tolist()
결과 비교 그래프
출처 : https://winterj.me/list_of_lists_to_flatten/
성능들을 한눈에 알아보기 쉽게 하기 위해 matplotlib를 통해 그래프로 시각화 시켜주었다.
log스케일의 그래프임으로 x축에서 1칸의 차이는 실질적으로 10배의 차이다.
Numpy와 itertools의 차이는 약 100배, Numpy와 sum()의 차이는 1000배 이상이다.
'Computer > Python' 카테고리의 다른 글
[Python] 코로나바이러스 시각화 지도 히스토리 (0) | 2020.03.16 |
---|---|
[Python] 코로나19 바이러스 지도에 히스토리 표현하기 (0) | 2020.03.11 |
The Best Python Data Visualization Libraries [2018] (0) | 2020.02.03 |
matplotlib 테마 바꾸기 (0) | 2020.02.03 |
[파이썬] python matplotlib animation ffmpeg error (0) | 2020.01.31 |