memo6759 님의 블로그
2025-09-17(컴프리헨션, 내장 함수,리스트, 튜플, 딕셔너리)-1 본문
파이썬 리스트 컴프리헨션(List Comprehension) 정리
기본 for문으로 리스트 만들기
일반적으로 리스트를 만들 때는 for문과 append()를 사용합니다.
list1 = []
for i in range(1, 11):
list1.append(i)
print(list1) # [1, 2, 3, ..., 10]
하지만 이 방식은 코드가 다소 길어진다.
리스트 컴프리헨션
리스트 컴프리헨션을 이용하면 한 줄로 동일한 결과를 얻을 수 있습니다
list2 = [i for i in range(1, 11)]
print(list2) # [1, 2, 3, ..., 10]
- 구조: [표현식 for 변수 in 반복가능객체 if 조건문(optional)]
- 조건문을 추가하면 필터링도 가능
예) [i for i in range(1, 11) if i % 2 == 0] ➜ 짝수만 추출
연산 적용하기
생성되는 값에 간단한 연산을 바로 적용할 수도 있습니다.
list3 = [i + 10 for i in range(1, 11)]
print(list3) # [11, 12, ..., 20]
반복 변수 사용하지 않기
반복문에서 인덱스를 사용하지 않을 때는 관례적으로 _(언더스코어)를 씁니다.
import random
list4 = [random.randint(0, 100) for _ in range(1, 11)]
print(list4) # 예: [32, 7, 88, ...]
_는 단순히 “변수 값을 쓰지 않겠다”는 표시일 뿐, 동작에는 영향이 없습니다.
정리
- 장점: 코드가 짧고 가독성이 좋음
- 응용: 조건문, 연산, 중첩 for문 모두 사용 가능
Python 리스트 컴프리헨션 정리
Python에서는 리스트를 만들 때 for문을 반복해서 append()하는 방식 대신,
**리스트 컴프리헨션(List Comprehension)**을 사용하면 더 간결하고 직관적으로 표현할 수 있습니다.
1. 기본적인 리스트 생성
일반적인 for문을 이용해 1부터 10까지 숫자가 들어간 리스트를 만들어 보겠습니다.
list1 = []
for i in range(1, 11):
list1.append(i)
print(list1) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2. 리스트 컴프리헨션 기본 형태
위 코드를 한 줄로 간단하게 쓸 수 있습니다.
list2 = [i for i in range(1, 11)]
print(list2) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- [표현식 for 변수 in 반복] 구조로 되어 있습니다.
- 반복문을 리스트 안에 직접 넣어 리스트를 생성합니다.
3. 연산을 활용한 리스트 컴프리헨션
표현식에 연산을 넣어 새로운 값을 만들 수도 있습니다.
list3 = [i + 10 for i in range(1, 11)]
print(list3) # [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
4. random과 함께 사용하기
리스트 컴프리헨션 안에서 함수 호출도 가능합니다.
아래는 0~100 사이의 랜덤 정수를 10개 생성하는 예제입니다.
import random
list4 = [random.randint(0, 100) for _ in range(1, 11)]
print(list4)
# 예시 출력: [87, 23, 65, 4, 100, 12, 90, 33, 76, 55]
여기서 _는 반복문 변수(i)를 사용하지 않겠다는 의미입니다.
5. 조건문을 활용한 리스트 컴프리헨션
if 조건을 붙이면 특정 조건을 만족하는 값만 리스트에 담을 수 있습니다.
list5 = [i for i in range(1, 11) if i % 2 == 0]
print(list5) # [2, 4, 6, 8, 10]
6. 리스트 컴프리헨션 구조 정리
리스트 컴프리헨션은 다음과 같은 구조를 가집니다:
[표현식 for 변수 in 반복 if 조건식]
- 표현식 → 리스트에 담을 값 (연산, 변수, 함수 호출 등 가능)
- for 변수 in 반복 → 반복문
- if 조건식 → 조건을 만족할 때만 값 추가 (선택 사항)
정리
- 리스트 컴프리헨션은 리스트 생성 코드를 짧고 가독성 있게 작성할 수 있다.
- 반복문, 연산, 조건식, 함수 호출까지 모두 활용 가능하다.
- for문과 append()를 사용할 때보다 훨씬 파이썬다운 코드를 작성할 수 있다.
1. 리스트 (List)
- 순서가 있는 데이터 구조
- [] 대괄호를 사용해 정의
- 인덱싱(indexing)과 슬라이싱(slicing) 가능
- 데이터 수정 가능 (mutable)
- 문자열, 정수 등 다양한 자료형을 함께 저장 가능
주요 특징
- 인덱스 접근: list1[0], list1[-1]
- 인덱스는 0부터 시작, 음수 인덱스로 역순 접근 가능
- 슬라이싱: 특정 구간의 요소들을 잘라서 가져올 수 있음
- 리스트[start:end:step] (end는 end-1까지 포함)
list1 = [10, 20, 30, 40, 50, 60]
print(list1[0]) # 10
print(list1[-1]) # 60
print(list1[1:4]) # [20, 30, 40]
print(list1[::2]) # [10, 30, 50]
주요 메소드
- append(x) : 리스트 끝에 요소 추가
- insert(i, x) : 특정 위치에 요소 삽입
- remove(x) : 지정한 요소 삭제
- index(x) : 지정한 값의 인덱스 반환
- sort() : 오름차순 정렬
- reverse() : 역순으로 정렬
list2 = [3, 1, 4, 2]
list2.append(5) # [3, 1, 4, 2, 5]
list2.sort() # [1, 2, 3, 4, 5]
list2.reverse() # [5, 4, 3, 2, 1]
2. 튜플 (Tuple)
- 순서가 있는 데이터 구조
- 리스트와 비슷하지만 값 변경 불가능 (immutable)
- () 소괄호를 사용해 정의
- 패킹(Packing)과 언패킹(Unpacking) 가능
- 안전하게 묶어두고 싶은 고정된 데이터에 적합
t1 = (1, 2, 3)
print(t1[0]) # 1
# t1[0] = 100 # ❌ 에러 발생 (튜플은 수정 불가)
# 패킹 & 언패킹
t2 = (10, 20, 30)
a, b, c = t2
print(a, b, c) # 10 20 30
활용 예시: 좌표, RGB 색상, 고정된 설정값 등
3. 딕셔너리 (Dictionary)
- key와 value의 쌍으로 저장되는 데이터 구조
- {} 중괄호를 사용해 정의
- 순서를 가지지 않음 (Python 3.7+부터는 입력 순서를 기억하지만, 의미상 순서 없음)
- 인덱싱/슬라이싱 불가능, 대신 key로 접근
person = {
"name": "Alice",
"age": 25,
"city": "Seoul"
}
print(person["name"]) # Alice
print(person["age"]) # 25
특징
- key는 중복 불가, 고유해야 함
- value는 어떤 자료형이든 가능
- key로 value를 빠르게 조회 가능
정리
자료구조 순서 수정 가능 중복주요 사용 예시
| 리스트(List) | O | O | O | 여러 값 모아두고 자주 수정하는 경우 |
| 튜플(Tuple) | O | X | O | 고정된 데이터 묶음, 안전하게 보관 |
| 딕셔너리(Dictionary) | X (의미상) | O | key는 X, value는 O | key-value 형태 데이터 (예: 회원 정보, 설정값) |
'HDC 학습일지' 카테고리의 다른 글
| 2025-09-22(자바 Stream, git) (0) | 2025.09.22 |
|---|---|
| 2025-09-17(내장 함수 (0) | 2025.09.18 |
| 2025-09-16(python 기본) (0) | 2025.09.17 |
| 2025-09-15(제네릭, 파이썬 설치 환경 및 VisualStudioCode) (0) | 2025.09.16 |
| HDC 랩스 : 2025-09-08(생성자, static 변수) (0) | 2025.09.08 |