프로젝트 2 : 리스트 평탄화
리스트 평탄화란?중첩된 리스트가 있을 때 중첩을 모두 제거하고 풀어서 1차원 리스트로 만드는 것을 말합니다.
리스트를 평탄화 하기 전에 반복문 문제로 warm-up 해보겠습니다. 반복문의 기본 구조는 다음과 같았습니다.
for 변수 in 컬렉션:
수행할 문장
이때 컬렉션은 여러 개의 값을 모아 놓은 집합이라고 했었습니다.
그럼 이번에 다룰 중첩된 리스트도 여러 요소가 모여 있으니 컬렉션이라고 할 수 있겠네요!
그러면 for문의 컬렉션에 중첩된 리스트를 넣어 보고 각각 어떻게 출력되는지 실험하고 관찰해보겠습니다.
overlap이라는 중첩된 리스트를 만들었습니다. 이 리스트를 컬렉션에 두고 한 요소씩 출력해보겠습니다.
[1, 2]
3
[[4, 5, 6], 7]
8
9
결과를 보니 가장 바깥 괄호를 기준으로 요소가 출력된 것을 확인할 수 있습니다.
반복문은 range함수와 자주 쓰이지만 이렇게 컬렉션을 차례로 꺼낼 수 있음을 다시 상기시켰습니다. 자, 이렇게 간단하게 for문으로 코딩의 warm-up을 해봤습니다.
이제 본격적으로 프로젝트에 들어가보겠습니다.
[리마인드] 중첩된 리스트가 있을 때 중첩을 모두 제거하고 풀어서 1차원 리스트로 만드는 것을 리스트 평탄화 라고 합니다. 이런 평탄화를 해주는 함수를 만들어 보겠습니다.
중첩된 리스트를 flatten 함수에 넣은 결과가 [1, 2, 3, 4, 5, 6, 7, 8, 9]로 나오게 해야합니다.
이 문제를 풀 때는 리스트의 데이터가 리스트인지 아닌지 구분할 수 있어야 합니다.
type()함수를 사용해서 자료형을 판별하는 것을 활용할 수 있을 거 같습니다.
list
전략을 짜보겠습니다. 함수 안에 새로운 빈 리스트를 만들어 두고 요소의 type을 확인해서 리스트가 아니면 빈 리스트에 그 값을 더하고 리스트면 그 안에 요소가 리스트일지 또 확인해야 합니다.
리스트인 요소 안에 리스트 요소가 있는지 확인하는 것이 재귀적입니다.
재귀 함수를 활용할 수 있겠습니다!
리스트가 아닌 요소가 나올 때까지 재귀적 으로 탐색해보겠습니다.
※ 아래 # 반복문과 재귀를 활용하여 함수 채워봐요. 영역에 코드를 직접 입력해 보세요.
- 강의 영상을 통해 정답 코드를 확인 하실 수 있습니
직접 입력한 함수를 넣고 코드 실행버튼을 클릭해 보세요. 실행이 잘 되었나요?
재귀함수를 이해하기에 정말 좋은 프로젝트입니다.
결과를 확인해보겠습니다.
[]
함수가 잘 실행 되는지 확인을 위해 코드 실행 버튼을 클릭해 확인해 보세요.
'언어 > 파이썬' 카테고리의 다른 글
머신러닝 기초 with 파이썬 2강_라이브러리 불러오기, 데이터프레임과 시리즈, 데이터 불러오기 및 저장 (0) | 2024.02.28 |
---|---|
어디까지 파봐썬 10강(3) 프로젝트 3 : 10 이하 숫자만 곱해주는 함수 (1) | 2024.02.27 |
파이썬 어디까지 파봐썬 10강(1)_전화번호 가려주는 프로그램 만들기 (1) | 2024.02.25 |
파이썬 어디까지 파봐썬9강(2)_변수의범위&재귀호출(알고리즘반복) (0) | 2024.02.24 |
파이썬 어디까지파봐썬9강(1)_인수의 형식 (0) | 2024.02.23 |