1. 리스트 평탄화 시키기
문제 :
아래 리스트를 병합해
하나의 리스트로 출력하시오.
(재귀 함수 및 flatten( ) 함수 사용)
주어진 코드 :
example = [[1,2,3], [4,[5,6]],7,[8,9]]
def flatten(data):
print("원본 :", example)
print("변환", flatten(example))
실행 결과 :
원본 : [[1,2,3], [4,[5,6]],7,[8,9]]
변환 : [1,2,3,4,5,6,7,8,9]
풀이:
이와 같은 리스트 병합 문제를 풀 때는
먼저 리스트의 데이터 타입이 리스트인지
아닌지 구분할 수 있어야 하는데
다음과 같이 type() 함수를 사용해
자료형의 타입을 알아볼 수 있다.
예)
type (7) == int
=True
type ("7") == str
=True
type([ ]) == list
=True
먼저 함수의 기본 형태를
만들어 주면서 시작하자.
ouput이라는 변수를 만들고
해당 변수를 초기화 시킨다.
*변수 초기화란 지난 시간
반복문을 사용하는 코드에서
반복 횟수마다 특정 계산을
해야 했던 경우처럼 필요한
값을 넣어주는 것이었는데
덧셈은 1, 곱셈은 0 등을 넣었었다.
이번 문제의 경우 우리는
리스트를 만들어 줘야 하기 때문에
초기화 값으로 리스트를 넣어준다.
그리고 이 output 을 return 시켜줌으로
기본 구조 만들어 주는 것이 끝나게 된다.
flatten(data):
output = [ ]
return output
이제 내부에 반복문을 만들어
data의 반복을 돌려주면 되는데
리스트의 요소들을 특정 변수에
담아주고 조건문을 만들어
만들어둔 변수의 타입이 리스트라면
output에 자기 자신 flatten(재귀)을
실행하고 여기에 item을 전달한다.
flatten(data):
output = [ ]
for item in data:
if type(item) == list:
output += flatten(item)
만약 리스트가 아닌 경우
list를 추가하는 형태로 코드가
실행될 것이다.
리스트 평탄화는 정말 많이
사용하는 기능 중 하나이고
다양한 평탄화 방법이 있으니
필요할 때 검색해 보자.
* 함수를 사용하는 이유
1. 가독성이 좋다
프로그래밍 언어에서 가독성은
굉장히 중요한 요소이다.
파이썬의 경우 타 언어에 비해
가독성 좋게 코드를 작성하는 것은
어렵지 않다.
다만 처리 속도를 생각하는
부분이 어렵다.
2. 코드 분석이 쉽다
일반적으로 복잡하게
작성된 코드의 경우
별도의 주석을 달아
해당 코드의 역할과 기능을
설명하는데
함수를 잘 사용하면
주석을 달 필요도 없이
함수의 이름, 즉 코드의
본문만 살펴보더라도 어떤
코드인지를 이해하기 쉽다.
그러니 간단한 코드라도
어떤 의미를 가지고 있으면
함수로 만들어 사용하는 것이
좋다.
3. 유지 보수가 쉽다.
도움 : 혼자공부하는파이썬 윤인성님
https://www.youtube.com/watch?v=mIGgK5pgEGA&list=PLBXuLgInP-5kr0PclHz1ubNZgESmliuB7&index=38
'프로그래밍 > Python' 카테고리의 다른 글
기초) 람다 / map & filter 함수 (0) | 2020.05.30 |
---|---|
기초) 튜플 정리 (0) | 2020.05.30 |
기초) 재귀 함수와 메모화, 조기 리턴 정리 (중요) (0) | 2020.05.28 |
기초) return 정리 및 문제 풀기 (0) | 2020.05.28 |
기초) 일반, 가변, 기본 매개변수 사용법 (0) | 2020.05.28 |