파이썬 언어로 코딩테스트 챌린지를 진행하다가 리스트 컴프리헨션에 대한 이해가 부족한 것 같아서 기초 개념부터 정리해보려고 한다.
우선 리스트, 딕셔너리, 튜플 개념 정리해보자
리스트, 딕셔너리, 튜플은 모두 파이썬 내장 자료구조이다.
구성은 어떻게 되어있을까, 사진으로 살펴보려고 한다.
: 특정 키워드에 특정 객체를 가지고 있는 형식
personal_info = {
'name': 'aldonza',
'age': 20,
'nickname': 'dulcinea'
}
print(personal_info['name'])
print(personal_info['age'])
print(personal_info['nickname'])
>>> a = [1, 'a', 3.0, (1, 2)]
>>> b = list((1, 2, 3, 4))
# a, b 둘 다 list 생성 됨
# 빈 튜플 : ()로 생성
>>> b = ()
# 비어있지 않은 튜플: 컴마(,)를 통해 생성
>>> a = 1, 2, 3, '4' , '5', 6.0
이제 패턴이 있는 list, dictionary, set을 보다 간단하게 작성할 수 있도록 하는 컴프리헨션에 대해서 알아보려고 한다.
예시로 for문보터 보도록 하자.
# 1~10까지 정수를 순서대로 가지고 있는 리스트 생성 코드
numbers = []
for n in range(1, 10+1):
numbers.append(n)
위 코드를 컴프리헨션으로 표기할 경우 다음과 같은 코드를 볼 수 있다.
>>> [x for x in range(10)]
>>> [x for x in range(1, 10+1) if x % 2 == 0]
[2, 4, 6, 8, 10]
사용자 입력을 받아 2차원 리스트로 저장하기
N, M = map(int, input().split())
matrix = [list(map(int, input().split())) for _ in range(N)]
print(matrix)
students = ['철수', '영희', '길동', '순희']
student_scores = {student: 0 for student in students}
print(student_scores)
=> 각 학생의 점수를 0으로 설정하는 코드
students = ['철수', '영희', '길동', '순희']
scores = [50, 80, 90, 60]
student_dict = {students[i]: scores[i] for i in range(len(students))}
print(student_dict)
<출력값>
{'철수': 50, '영희': 80, '길동': 90, '순희': 60}
=> students[i]를 키, scores[i]를 값으로 매핑하여 딕셔너리 생성하는 코드이다.
🔗 출처 : 제대로 파이썬_컴프리헨션