IT/Python

[Python] 리스트 컴프리헨션 ( for + if 문 간소화)

반응형

리스트 컴프리헨션 이란?

리스트내에서 어떤 조건에 해당하는 것을 뽑아내거나 새로운 리스트를 만들어 낼때 사용하는 것. 좀 더 쉽게 이해하기 위해 for + if 문을 조합한 것이라고 생각하면 쉽습니다.

리스트컴프리헨션 사용 문법

new_list = [변수 활용 for 변수 in 반복대상 if 조건]

리스트컴프리헨션 예시

my_list = [1,2,3,4,5]
new_list = [x for x in my_list if x > 3]
  • 맨앞에 x 는 변수 활용 임
  • x -> [1,2,3,4,5]
  • x+1 -> [2,3,4,5,6]
  • x*3 -> [3,6,9,12,15]
  • str(x) + '번' -> [1번,2번,3번,4번,5번]

리스트컴프리헨션 예시 해석

  • (1) my_list에서
  • (2) 3보다 큰 값들만
  • (3) 그대로사용해서
  • (4) 새로운 리스트로 만들어줘

리스트 컴프리헨션을 사용하지 않은 경우

for , if 문으로 문장이 길어짐

products = ['A-1010','B-2020','C-3030']
recall = []
for p in produects:
    if p.startswith('C'):
        recall.append(p)

print(recall) 
> ['C-3030']

리스트 컴프리헨션을 사용할 경우

한 줄로 간소화가 가능함

products = ['A-1010','B-2020','C-3030']
recall = [p for p in produects if p.startswith('C)]

print(recall) 
> ['C-3030']

리스트 컴프리헨션 활용 예제

  • 모든 모델명 뒤에 SE(special edition)를 붙이기
products = ['A-1010','B-2020','C-3030']
prod_se = [p + 'SE' for p in products]
  • 모든 모델명을 소문자로 바꾸기
products = ['A-1010','B-2020','C-3030']
prod_lower = [p.lower() for p in products]
  • 특정 문자열 조건을 맞는것을 가져와서 NEW라는 글자를 넣어줘
products = ['A-1010','B-2020','C-3030']
prod_new = [p+'NEW' for p in products if p.endswith('3030)]
반응형