본문 바로가기

Programming/[Python]

[Python] List Comprehension 이해하기

반응형

환경 : windows 10, VS Code, Python 3.7

 

1. 개요

다른 사람의 소스 코드를 보면 자주 보게되는데, 이 표현식을 사용할 줄 모른다면 코드를 이해할 때 걸림돌이 됩니다. (ㅜㅜ) 하지만 리스트 컴프리헨션을 사용 시 코드 작업의 엄청난 효율을 가져다줍니다!

간단한 예제를 통해 이해를 높혀봅시다.

 

2. 예제 설명

2.1. for문

1부터 n까지의 숫자를 입력 받아 리스트에 "정수형"으로 저장한다면 어떻게 해야할까요? 기존 표현 방식으로는 다음과 같이 작성합니다.

number = int(input())
array = []
for i in range(1, number+1):
    array.append(i)
print(array, type(array[0]))

10을 입력했을 때의 결과값

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] <class 'int'>

1부터 10까지의 자연수가 입력됐고, 자료형은 int로 확인할 수 있습니다.

총 다섯줄의 코드를 입력하였습니다.

 

 

다음은 리스트 표현식으로 작성해보겠습니다.

number = int(input())
array = [i for i in range(1, number+1)]
print(array, type(array[0]))

10을 입력했을 때의 결과값

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] <class 'int'>

단 세줄의 코드로 같은 결과를 나타낼 수 있습니다. 

 

위의 리스트 표현식은 array = [] 로 선언된 리스트 안에서 반복문과 제어문을 사용합니다.

i for i in range(1, number+1) 는 for 문에서 나타나는 i를 리스트 요소로 취하겠다는 의미입니다.

 

2.2. if문

리스트 컴프리헨션에서는 if 문도 사용할 수 있습니다.  1부터 n까지의 자연수에서 홀수일 때만 리스트에 입력해보겠습니다.

 

기존 표현 방식

number = int(input())
array = []
for i in range(1, number+1):
    if i % 2 != 0:
        array.append(i)
print(array, type(array[0]))

결과

[1, 3, 5, 7, 9] <class 'int'>

나머지 연산자를 이용하여 다음과 같이 홀수만 리스트에 삽입하였습니다.

 

리스트 컴프리헨션

number = int(input())
array = [i for i in range(1, number+1) if i % 2 != 0]
# i는 .append(i) 역할
# 제어,반복문은 콜론을 제거하고 순서대로 작성
print(array, type(array[0]))

결과

[1, 3, 5, 7, 9] <class 'int'>

맨 앞에 i는 리스트에 입력할 값, 뒤에 for문과 if문은 기존 표현방식 순서대로 입력된 것을 확인할 수 있습니다.

 

2.3. 자료형 바꿔서 받기

 

앞의 예제는 모두 int 자료형으로 값을 받았습니다. 만약 문자형이나 실수형으로 받고 싶으면 어떻게 해야할까요?

 

1부터 10까지 문자형으로 받기

number = int(input())
array = [str(i) for i in range(1, number+1)]
print(array, type(array[0]))

결과

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] <class 'str'>

str(i)를 해주므로써 정수형 i가 문자열 자료로 변환된 것을 볼 수 있습니다.

 

1부터 10까지 실수형으로 받기

number = int(input())
array = [float(i) for i in range(1, number+1)]
print(array, type(array[0]))

결과

[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0] <class 'float'>

float(i)를 통해 실수형으로 변환되어 리스트에 입력되었습니다.

 

위의 두 작업 모두 자료형을 변환하는 내장 함수를 적용해준 것으로 다른 함수를 사용하여 적용할 수 있습니다.

 

3. 요약

  • 리스트 컴프리헨션은 리스트 내에서 제어문, 반복문, 함수 등을 사용하여 리스트의 값들을 입력하는 표현 방식이다.
  • 기본적인 표현 방식은 list = [{입력할 요소} {반복문 or 제어문을 순서대로 입력(콜론제거)}]
  • 입력할 요소 부분에 함수를 적용할 수 있고, 반복문 제어문을 입력할때는 순서대로 입력한다.

 

반응형