[파이썬] 입출력 유형_02. 컴프리헨션(리스트,딕셔너리) 및 튜플 개념 정리

seonseon·2025년 2월 28일
0

파이썬 언어로 코딩테스트 챌린지를 진행하다가 리스트 컴프리헨션에 대한 이해가 부족한 것 같아서 기초 개념부터 정리해보려고 한다.

우선 리스트, 딕셔너리, 튜플 개념 정리해보자


파이썬 내장 자료구조

리스트, 딕셔너리, 튜플은 모두 파이썬 내장 자료구조이다.
구성은 어떻게 되어있을까, 사진으로 살펴보려고 한다.

1️⃣ Container 객체란?

  • 여러 개의 데이터를 저장할 수 있는 자료형

✅ dict (딕셔너리)

: 특정 키워드에 특정 객체를 가지고 있는 형식

  • 순서 없음
  • {key: value} 형태로 데이터를 저장
  • 키(key)와 값(value)으로 이루어진 쌍을 저장하는 자료형
  • 중복된 키를 허용하지 않음
personal_info = {
  'name': 'aldonza',
  'age': 20,
  'nickname': 'dulcinea'
}

print(personal_info['name'])
print(personal_info['age'])
print(personal_info['nickname'])

2️⃣ Sequence(시퀀스) 객체란?

  • 순서(인덱스)를 가지는 데이터 구조
  • container 객체에 포함되어있는 객체

✅ list (리스트)

  • 수정 가능한(mutable) 자료구조
  • 요소를 추가, 삭제, 변경할 수 있음
  • sequence타입이기 때문에 순번(index)를 통해 값 찾기 가능
  • 대괄호를 통해 생성
>>> a = [1, 'a', 3.0, (1, 2)]
>>> b = list((1, 2, 3, 4))

# a, b 둘 다 list 생성 됨

✅ tuple (튜플)

  • 수정 불가능한(불변형) 자료구조
  • 리스트와 비슷하지만, 생성 후 값을 변경할 수 없음
# 빈 튜플 : ()로 생성
>>> b = ()

# 비어있지 않은 튜플: 컴마(,)를 통해 생성
>>> a = 1, 2, 3, '4' , '5', 6.0

이제 패턴이 있는 list, dictionary, set을 보다 간단하게 작성할 수 있도록 하는 컴프리헨션에 대해서 알아보려고 한다.

1️⃣ list 컴프리헨션

예시로 for문보터 보도록 하자.

# 1~10까지 정수를 순서대로 가지고 있는 리스트 생성 코드
numbers = []
for n in range(1, 10+1):
    numbers.append(n)

위 코드를 컴프리헨션으로 표기할 경우 다음과 같은 코드를 볼 수 있다.

>>> [x for x in range(10)]
  • 반복문을 별도로 작성하지 않고 리스트 내부에 작성하여 반복하는 코드이다.
  • x는 for문 내부에서 append메소드에 인자로 넣은 변수 n과 같다.

조건 설정하기

  • if 키워드를 넣어 조건 설정하는 것도 가능하다.
>>>  [x for x in range(1, 10+1) if x % 2 == 0]
[2, 4, 6, 8, 10]

2차원 배열에서의 활용법

사용자 입력을 받아 2차원 리스트로 저장하기

N, M = map(int, input().split())  
matrix = [list(map(int, input().split())) for _ in range(N)]

print(matrix)

2️⃣ dict 컴프리헨션

  • 리스트 컴프리헨션과 같은 방식으로 딕셔너리를 생성하는 문법
  • 중괄호 {}를 사용하고, key: value 형태로 값을 넣어 간결하게 생성 가능

기본 딕셔너리 컴프리헨션

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]를 값으로 매핑하여 딕셔너리 생성하는 코드이다.

🔗 출처 : 제대로 파이썬_컴프리헨션

0개의 댓글