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)]
참고자료
1) 리스트 컴프리헨션
## 리스트 생성하기 기존에 배운 문법으로 1부터 10까지 정수를 순서대로 가지고 있는 리스트를 생성하는코드는 다음과 같습니다. ``` numbers = [] for n i…
wikidocs.net
'대외활동 > [부트캠프] 빅데이터 분석가 과정' 카테고리의 다른 글
[SQL] 03-1. SQL - 데이터베이스란? (0) | 2024.04.02 |
---|---|
[Python] 02-5. Python 기초 - 함수, lambda함수, sort와 sorted (2) | 2024.04.01 |
[Python] 02-3. Python 기초 - 조건문과 반복문 (0) | 2024.04.01 |
[Python] 02-2. Python 기초 - 여러 가지 자료형 (2) | 2024.03.31 |
[Python] 02-1. Python 기초 - 변수, 멀티할당 (1) | 2024.03.31 |