2020. 12. 30. 23:19ใBackend/๐ Python
2์ฐจ์ ๋ฆฌ์คํธ๋ฅผ 1์ฐจ์ ๋ฆฌ์คํธ์ ํํ๋ก ๋ง๋๋ ๊ฒ์ flatten์ด๋ผ ๋ถ๋ฅธ๋ค.
์ฆ matrix(2์ฐจ์ ๋ฐฐ์ด)๋ฅผ ๋ฆฌ์คํธ(1์ฐจ์ ๋ฐฐ์ด) ํํ๋ก ๋ง๋๋ ๊ฒ์ด๋ค.
my_list = [[1, 2], [3, 4], [5, 6]]
๋ฐฉ๋ฒ 1 - sum ํจ์
answer = sum(my_list, [])
print(answer)
>>> [1, 2, 3, 4, 5, 6]
itertools ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ
๋ฐฉ๋ฒ 2 - itertools.chain
print(list(itertools.chain(*board)))
>>> [1, 2, 3, 4, 5, 6]
๋ํ, itertools ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ iterableํ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐํํ๋ itertools.chain() ํจ์๊ฐ ์๋ค.
itertools.chain() ๋ฉ์๋ ์ธ์์ iterable ์์๋ฅผ ์ฐ๊ฒฐํ์ฌ ๋ฐํํด์ค๋ค.
* ๋จ, 2์ฐจ์ ๋ฐฐ์ด ํํ๊ฐ ๊ทธ๋๋ก ๋ค์ด๊ฐ๋ฉด ์๋๋ค. asterisk(*)๋ฅผ ์ฌ์ฉํ์ฌ 2์ฐจ์ ๋ฐฐ์ด์ unpackingํ ์์๋ฅผ ์ฐ๊ฒฐํด์ค๋ค.
* list๋ก ๊ฐ์ธ์ง ์์ผ๋ฉด hash๊ฐ๋ง ์ถ๋ ฅ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฑด list๊ฒฐ๊ณผ๊ฐ์ด๊ธฐ์ ๊ผญ list()๋ฅผ ์์์ฃผ์.
๋ฐฉ๋ฒ 3 - itertools.chain.from_iterable
import itertools
print(list(itertools.chain.from_iterable(board)))
>>> [1, 2, 3, 4, 5, 6]
๋ฐฉ๋ฒ 2 ์์ asterisk ๋ฅผ ์ฌ์ฉํ unpacking ๊ณผ์ ์ ๊ผญ ๊ฑฐ์ณ์ผํ๋ค. ์ด๋ฐ ๊ณผ์ ์ด ๊ท์ฐฎ๋ค๋ฉด, from_iterable() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
reduce(์ง๊ณ ํจ์, ์ํ ๊ฐ๋ฅ ๋ฐ์ดํฐ[, ์ด๊ธฐ๊ฐ]) # ์ํ ๊ฐ๋ฅ ๋ฐ์ดํฐ: iterables
๋ฐฉ๋ฒ 4 - reduce ํจ์ (1)
from functools import reduce
print(list(reduce(lambda x, y: x+y, my_list)))
>>> [1, 2, 3, 4, 5, 6]
๋ฐฉ๋ฒ 5 - reduce ํจ์ (2)
operator.add(x, y)๋ x+y ํํ์๊ณผ ๋๋ฑํ๋ค. ์ฆ ์์ ๋ฐฉ๋ฒ 4์ lambda x, y: x + y ๊ฐ operator.add์ ์ญํ ์ ํ๋ค.
from functools import reduce
import operator
print(list(reduce(operator.add, my_list)))
>>> [1, 2, 3, 4, 5, 6]
'Backend > ๐ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ด์ฌ ๊น์ ๋ณต์ฌ, ์์ ๋ณต์ฌ (shallow copy, deep copy) (0) | 2021.05.18 |
---|---|
์ธํ๋ฐ ๋ฆฌํ2๊ธฐ OT (0) | 2021.03.10 |
ํ์ด์ฌ ๋์ ๋๋ฆฌ value ๊ธฐ์ค ์ ๋ ฌ (key, lambda) (0) | 2020.11.22 |
Stack, Queue (0) | 2020.11.09 |
strํ์์ listํ / ํ๋ก๊ทธ๋๋จธ์ค ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ (level1) (0) | 2020.11.09 |