보통 사람들은 for 문을 이용해 두 iterable의 원소를 하나씩 곱해갑니다.
iterable1 = 'ABCD'
iterable2 = 'xy'
iterable3 = '1234'
for value1 in iterable1:
for value2 in iterable2:
for value3 in iterable3:
print(value1, value2, value3)
파이썬에서는
itertools.product를 이용하면, for 문을 사용하지 않고도 곱집합을 구할 수 있습니다.
import itertools
iterable1 = 'ABCD'
iterable2 = 'xy'
iterable3 = '1234'
print(list(itertools.product(iterable1, iterable2, iterable3)))
파이썬에서는
파이썬의 다양한 기능을 사용하면, for 문을 사용하지 않고도 리스트를 이어 붙일 수 있습니다.
my_list = [[1, 2], [3, 4], [5, 6]]
answer = sum(my_list, [])
import itertools
list(itertools.chain.from_iterable(my_list))
import itertools
list(itertools.chain(*my_list))
[element for array in my_list for element in array]
from functools import reduce
list(reduce(lambda x, y: x+y, my_list))
from functools import reduce
import operator
list(reduce(operator.add, my_list))
제한적으로 사용 가능한 방법
아래의 방법은 각 원소의 길이가 동일한 경우에만 사용 가능합니다.
import numpy as np
np.array(my_list).flatten().tolist()
예를 들어 다음과 같은 리스트는 편평하게 만들 수 있고
다음과 같이 같이 각 원소의 길이가 다른 리스트는 편평하게 만들 수 없습니다.