파이썬에서 컴프리헨션은 간단명료하게 자료구조를 만드는 방법입니다.
일반적으로 리스트를 만드는 방법을 살펴보겠습니다.
0부터 10까지 수 중에 홀수만으로 리스트를 작성해 보죠.
최종 리스트는 [1, 3, 5, 7, 9] 가 될 것입니다.
1. 수작업
제일 간단하게 리스트를 만드는 방법은
리스트에 일일이 값을 추가시켜주는 방법일 것입니다.
리스트의 append() 메서드를 이용하면 되죠.
이렇게 다섯줄 만으로(?) 리스트를 생성했습니다.
그런데, 리스트의 크기가 백개, 만개, 백만개로 커진다면,
답이 없는 방법이겠죠.
2. for문과 range()를 이용한 방법
조금만 코드를 줄여보겠습니다.
코드가 확실히 줄어들었습니다.
range()를 이용해서 0~9까지 반복하면서
num 나누기 2를 했을 때 나머지가 1인(홀수) 숫자만 리스트에 추가시킵니다.
100까지를 하든, 백만까지를 하든 range()의 인자만 바꾸주면 되니까
코드는 줄고, 확장성은 늘었습니다.
3. 컴프리헨션으로 생성하는 방법
자, 이제 더 파이써닉한 방법을 사용해 보도록 하겠습니다.
컴프리헨션은 2번의 방법을 한줄로 처리할 수 있습니다.
보이십니까? 이 간단하고 깔끔한 방법이.
num_list3 = [num for num in range(0,10) if num%2 == 1]
이 구문을 좀 뜯어보도록 하겠습니다.
크게보면 3부분으로 나눌 수 있습니다.
for문 : num for num in range(0,10)
if 문 : if num%2 == 1
할당문 : num_list3 = [계산식]
이렇게 됩니다.
할당문은 당연히 있어야 하는거고,
for문과 if문만 살펴보면 되겠네요.
if문 없이 리스트를 만들어보겠습니다.
range()가 0부터 9까지 숫자를 만들어서 num으로 넘겨주고,
그 값으로 리스트를 만들고 있네요.
num값을 변경해서 다른 리스트를 만들 수도 있습니다.
num에 2를 곱해서 새로운 리스트를 생성했습니다.
다른 어떤 연산도 가능합니다.
저렇게 생성된 값 중에서 몇몇값만을 리스트에 추가하고 싶다면
제일 마지막 부분에 if문을 추가하면 됩니다.
홀수만 남겨두고 싶을 때는 num%2 == 1 로 값을 찾아주고,
5이하의 숫자만 남기고 싶을 때는 num <= 5 로 값을 찾아주면 됩니다.
홀수를 남기는 방법은 위에서 해 봤으니까,
5 이하의 숫자를 남기는 if문을 실행해 보겠습니다.
처음 사용할 때는 조금 어색하긴해도
조금만 손에 익으면 컴프리헨션으로 리스트를 만드는것이 얼마나 쉬운것인지 알게 되실겁니다.
덧붙여,
for문은 중첩해서 사용할 수 있습니다.
아래의 예를 한번 보죠.
숫자 0, 1과 문자 'a','b','c'를 이용해서 튜플을 만든 예제입니다.
중첩 for문과 같이 실행된다는것을 알 수 있습니다.
먼저 쓴 i가 바깥쪽 for문, j가 안쪽 for문 입니다.
3개의 for문을 사용할 수도 있습니다.
리스트 컴프리헨션을 사용하면,
간단한 코드로, 복잡한 자료구조를 손쉽게 만들어 낼 수 있습니다.
'IT' 카테고리의 다른 글
[파이썬 기초] 셋 컴프리헨션 (0) | 2019.04.10 |
---|---|
[파이썬 기초] 딕셔너리 컴프리헨션 (0) | 2019.04.09 |
[파이썬 기초] range() 함수로 여러가지 숫자 리스트 만들기 (0) | 2019.04.03 |
[파이썬 기초] 여러 시퀀스를 같이 반복(순회)하기 - zip() (0) | 2019.04.02 |
[파이썬 기초] python 명령 실행 시 버전 3이 실행되게 만드는 방법 (0) | 2019.02.23 |