대외활동/[부트캠프] 빅데이터 분석가 과정

[Python] 02-4. Python 기초 - 리스트 컴프리헨션

셈뇽 2024. 4. 1. 19:52
02-4. Python 기초 - 리스트 컴프리헨션

 

 

리스트 컴프리헨션은 현재까지 ASAC과정에서 배운 가장 유용한 개념인 것 같다. 사실 코딩을 해본 전공자(?)로서 개념들은 이미 알고 있지만, 코딩테스트 등을 위한 효율적인 코드 작성 방법에 대해서는 처음 배우기 때문에, 이 리스트 컴프리헨션과 앞으로 친해져야겠다는 생각이 들었다. 

 

리스트 컴프리헨션

✅ 리스트를 생성하는 컴프리헨션

 

1. 구조는 다음과 같다 

 

2. 잘 모르겠다면 예시를 보자

 

리스트로 작성한 코드가 있다.

a = ['a','b','c','d','f','g','c','i']

#  리스트 a 에서 원소 c를 지우기


for i in a:
  if i == 'c':
    a.remove(i)
  else:
    pass

 

 

리스트 컴프리헨션으로 작성하면? 

# 리스트 컴프리헨션
# -> 코드가 간결, but 너무 중첩해서 사용하면 오히려 복잡
# -> 값을 돌려가며 원하는 값을 모으는 역할
# -> 형식 : [ 모을 값 for i in a ]

a = ['a','b','c','d','f','g','c','i']

[i for i in a if i != 'c']
# -> 여러 원소를 모을 수도 있다

열심히 반복문 쓰고 if, else문 쓰던 게 두 줄에 끝났다.

 

3. 다른 예시로 더 연습해 보자.

# 리스트 컴프리헨션 연습하기

a = ['a','b','c','d','f','g','c','i']
# a의 홀수번째 위치한 값들에 대해서면 h라는 문자를 붙여 모으기

# for i, v in enumerate(a):
#   if i%2==0:
#     print(v+'h')

[v+'h' for i,v in enumerate(a) if i%2==0 ]

# [a[i]+'h' for i in range(len(a)) if i%2==0 ]
  • 주로 조건 필터링에 사용되며, for ~~~ if ~~~ print/append/remove() 등의 구조에 많이 사용된다
  • enumerate(), items() 등과 같이 사용할 수 있으며, 여러 대상도 수집 가능하다. → 코테에서 주로 사용된다
# 리스트 변경 연습
# a = ['one','two','three','four']를 ['one1','two2','three3','four4']로 변경하기

#1. for&range방식(정수 인덱스)
a = ['one','two','three','four']

for i in range(1,5):
  print(a[i-1]+str(i))

#1-1. 리스트컴프리핸션
[a[i-1]+str(i) for i in range(1,5,1)]

#2. 값 자체로 접근
cnt = 1

for i in a :
  print(i+str(cnt))
  cnt+=1

 

  • 아래와 같이 여러 값을 수집하는 예제도 알아두자! 
a = {
    'korean': 80,
    'english': 90,
    'science': 70
}

[(key, value) for key, value in a.items()]

## return
# [('korean', 80), ('english', 90), ('science', 70)]

 

 

 

참고자료

https://wikidocs.net/22805

 

1) 리스트 컴프리헨션

## 리스트 생성하기 기존에 배운 문법으로 1부터 10까지 정수를 순서대로 가지고 있는 리스트를 생성하는코드는 다음과 같습니다. ``` numbers = [] for n i…

wikidocs.net