Programming/Python

[Python] 2차원 리스트를 1차원 리스트로 만들기

코드

2차원 리스트

>>> list_ = []
>>> for i in range(4) :
>>>   list_.append([j for j in range(i)])
>>> list_
[[], [0], [0, 1], [0, 1, 2]]

 

1차원 리스트로 만드는 방법들

  • 방법 1 - sum 함수
>>> answer = sum(list_, [])
[0, 0, 1, 0, 1, 2]

 

  • 방법 2 - itertools.chain
>>> import itertools
>>> list(itertools.chain.from_iterable(list_))
[0, 0, 1, 0, 1, 2]

 

  • 방법 3 - itertoolsunpacking
>>> import itertools
>>> list(itertools.chain(*list_))
[0, 0, 1, 0, 1, 2]

 

  • 방법 4 - list comprehension 이용
>>> [element for array in list_ for element in array]
[0, 0, 1, 0, 1, 2]

 

  • 방법 5 - reduce 함수 이용 (1)
>>> from functools import reduce
>>> list(reduce(lambda x, y: x+y, list_))
[0, 0, 1, 0, 1, 2]

 

  • 방법 6 - reduce 함수 이용 (2)
>>> from functools import reduce
>>> import operator
>>> list(reduce(operator.add, list_))
[0, 0, 1, 0, 1, 2]

 

 

참고
https://programmers.co.kr/learn/courses/4008/lessons/12738