my_list = [[1, 2], [3, 4], [5, 6]]
์์ ๊ฐ์ 2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ
my_list = [1, 2, 3, 4, 5, 6]
์ ๊ฐ์ด 1์ฐจ์ ๋ฆฌ์คํธ๋ก ๋ฐ๊พธ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ค์ํ๋ค.
์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ - ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ (์ ์์ค ์ฝ๋ฉ)
mylist = [['A', 'B'], ['X', 'Y'], ['1']]
def solution(mylist):
answer = []
for arr in mylist:
for j in range(len(arr)):
answer.append(arr[j])
return answer
print (solution(mylist))
๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ my_list์์๋ฅผ ํ๋ํ๋ ๊บผ๋ด์ด answer์ ์ ์ฅํ๋ค. ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ด ์ผ๋ฐ์ ์ธ ์ฝ๋ฉ์ด๋ค.
๋ฐฉ๋ฒ 1 - sum ํจ์
my_list = [[1, 2], [3, 4], [5, 6]]
print (sum(my_list, []))
๋ฐฉ๋ฒ2 - itertools.chain ์ฌ์ฉ
import itertools
my_list = [[1, 2], [3, 4], [5, 6]]
print(list(itertools.chain.from_iterable(my_list)))
itertools์ chain์์ from_iterable์ ์ฌ์ฉํ์ฌ my_list์ ์์ ๊ฐ๊ฐ์ ์ถ์ถํ์ฌ list๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฐฉ๋ฒ3 - itertools์ unpacking ์ฌ์ฉ
import itertools
my_list = [[1, 2], [3, 4], [5, 6]]
print (list(itertools.chain(*my_list)))
๋ง์ฐฌ๊ฐ์ง๋ก ๋ฐฉ๋ฒ2์ ๊ฐ์ด itertools.chain์ ์ฌ์ฉํ์ง๋ง, my_list๋ฅผ ์ ๊ทผํ์ฌ ์์๋ฅผ ํ๋์ฉ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ด๋ค.
๋ฐฉ๋ฒ4 - list comprehension ์ฌ์ฉ
my_list = [[1, 2], [3, 4], [5, 6]]
print ([element for array in my_list for element in array])
๋ฐฉ๋ฒ 5 - reduce ํจ์ ์ด์ฉ1
from functools import reduce
import operator
my_list = [[1, 2], [3, 4], [5, 6]]
print (list(reduce(operator.add, my_list)))
functools์ reduceํจ์๋ฅผ ์ฌ์ฉํ ๋ฐฉ์์ด๋ค. my_list์ ๊ฐ๊ฐ ์์๋ฅผ operator.add๋ผ๋ ๋ง์ ์ฐ์ฐ์๋ฅผ ํตํด ์๋ก์ด ๋ฆฌ์คํธ์ ๊ฐ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ด๋ค.
๋ฐฉ๋ฒ 6 - reduce ํจ์ ์ด์ฉ2
from functools import reduce
my_list = [[1, 2], [3, 4], [5, 6]]
print (list(reduce(lambda x, y: x+y, my_list)))
๋ง์ฐฌ๊ฐ์ง๋ก reduce๋ฅผ ์ฌ์ฉํ์ผ๋ ๋๋ค ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ฌ์ ์ํ์๋ค.
๋ฐฉ๋ฒ 7 - numpy ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ flatten ์ด์ฉ
import numpy as np
my_list = [[1, 2], [3, 4], [5, 6]]
print (np.array(my_list).flatten().tolist())
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋์ง๋ง third-party๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ numpy๋ฅผ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ด๋ค.
์๋๋ ๊ฐ ๋ฐฉ์์ ๋ํ ํผํฌ๋จผ์ค(์ฑ๋ฅ) ์ฐจ์ด๋ฅผ ๋ณด์ฌ์ค๋ค. (์ถ์ฒ : winterj.me/list_of_lists_to_flatten/)
