Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- binary search
- leetcode 풀기
- 파이썬알고리즘풀기
- 릿코드 파이썬
- python zip_longest
- 파이썬 알고리즘
- 잇츠디모
- python sorted
- 릿코드풀이
- leetcode풀이
- 파이썬알고리즘
- python 알고리즘
- 알고리즘풀기
- 파이썬 릿코드
- 릿코드풀기
- 릿코드
- 파이썬릿코드풀기
- 알고리즘풀이
- python Leetcode
- 파이썬릿코드
- LeetCode
- python priority queue
- leetcode풀기
- python 릿코드
- 릿코드 풀기
- python xor
- 상가수익률계산기
- 파이썬 알고리즘 풀기
- 파이썬 프로그래머스
- 코틀린기초
Archives
- Today
- Total
소프트웨어에 대한 모든 것
[파이썬] 2차원 리스트 1차원 리스트로 변환 본문
반응형
2차원 리스트가 있고, 이를 1차원 리스트로 변환해야 하는 경우가 종종 발생합니다.
2차원 리스트
nums = [
[1, 2, 3],
[4, 5],
[6, 7, 8]
]
1차원 리스트로 변환
nums = [1, 2, 3, 4, 5, 6, 7, 8]
아주 다양한 방법들이 많은데 하나씩 살펴 보겠습니다.
방법1) 반복문
직관적으로 반복문을 이용해서 만듭니다.
빈 리스트에 계속 더해가면서 1차원으로 만들어 가는 방식입니다.
nums = [
[1, 2, 3],
[4, 5],
[6, 7, 8]
]
nums_flat = []
for arr in nums:
nums_flat += arr
print(nums_flat)
출력
[1, 2, 3, 4, 5, 6, 7, 8]
방법2) sum()
방법1의 반복문 기법을 자세히 살펴 보시면 [] 빈 리스트에 리스트를 계속 더해가는 방식입니다.
sum() 함수로 반복문을 대체 할 수 있습니다. sum() 함수의 두 번째 인자(start)에 초기값을 지정할 수 있는데 default로 0인데 이를 []를 넘겨주면 방법1과 동일한 수행하게 됩니다.
nums = [
[1, 2, 3],
[4, 5],
[6, 7, 8]
]
num_flat = list(sum(nums, []))
print(num_flat)
출력
[1, 2, 3, 4, 5, 6, 7, 8]
방법3) itertools.chain
itertools.chain을 이용해서 iterable한 객체들을 체인처럼 연결하는 함수입니다.
chain()에 iterable 객체를 넘길 때 unpacking해서 넘겨야 합니다.
import itertools
nums = [
[1, 2, 3],
[4, 5],
[6, 7, 8]
]
nums_flat = list(itertools.chain(*nums))
print(nums_flat)
출력
[1, 2, 3, 4, 5, 6, 7, 8]
itertools.chain.from_iterable() 함수도 사용 가능합니다.
import itertools
nums = [
[1, 2, 3],
[4, 5],
[6, 7, 8]
]
nums_flat = list(itertools.chain.from_iterable(nums))
print(nums_flat)
출력
[1, 2, 3, 4, 5, 6, 7, 8]
방법4) list comprehensin
nums = [
[1, 2, 3],
[4, 5],
[6, 7, 8]
]
nums_flat = [n for arr in nums for n in arr]
print(nums_flat)
출력
[1, 2, 3, 4, 5, 6, 7, 8]
방법5) reduce()
동작은 sum()과 동일하게 보면 될 것 같습니다.
reduce syntax
reduce(집계 함수, 순회 가능한 데이터[, 초기값])
from functools import reduce
nums = [
[1, 2, 3],
[4, 5],
[6, 7, 8]
]
nums_flat = list(reduce(lambda x, y: x + y, nums))
print(nums_flat)
출력
[1, 2, 3, 4, 5, 6, 7, 8]
반응형
'파이썬' 카테고리의 다른 글
[파이썬] enum 열거형 (0) | 2022.03.29 |
---|---|
[파이썬] dict에서 첫 번째 키 값 가져오기 (0) | 2022.03.26 |
[파이썬] enumerate() 함수의 모든 것 (0) | 2022.03.20 |
[파이썬] str.split() vs str.split(' ') 차이? (0) | 2022.03.19 |
[파이썬] isdecimal(), isdigit(), isnumeric() 차이 (0) | 2022.03.02 |
Comments