■ 리스트(List) 활용 예제
파이썬에서 가장 많이 쓰이고 강력한 자료구조 중 하나인 리스트(List) 활용 예제를 준비했습니다. 리스트는 여러 개의 데이터를 순서대로 저장하고, 생성 후에도 자유롭게 추가, 삭제, 수정할 수 있는 특징이 있습니다. 실생활에서 자주 접할 수 있는 '장바구니(Shopping Cart)' 프로그램을 통해 주요 리스트 기능들을 어떻게 활용하는지 함께 살펴봅시다.
🛒 실습 예제: 나만의 장바구니 관리 프로그램
| # 1. 빈 리스트 생성 cart = [] print(f"초기 장바구니: {cart}\n") |
▶실행 결과
| 초기 장바구니: [] |
append(값): 리스트 맨 끝에 새로운 데이터를 추가합니다.
| # 2. append(): 리스트의 맨 끝에 항목 추가 cart.append("사과") cart.append("바나나") cart.append("우유") print(f"상품 추가 후: {cart}") |
▶실행 결과
| 상품 추가 후: ['사과', '바나나', '우유'] |
insert(위치, 값): 원하는 인덱스 번호에 데이터를 끼워 넣습니다.
| # 3. insert(): 특정 위치(인덱스)에 항목 삽입 (인덱스 1번에 '딸기' 추가) cart.insert(1, "딸기") print(f"특정 위치에 딸기 삽입 후: {cart}") |
▶실행 결과
| 특정 위치에 딸기 삽입 후: ['사과', '딸기', '바나나', '우유'] |
remove(값): 지정한 값과 일치하는 요소를 삭제합니다. (중복 시 첫 번째 것만 삭제)
| # 4. remove(): 특정 값을 찾아 삭제 (처음 발견되는 '바나나' 삭제) cart.remove("바나나") print(f"바나나 삭제 후: {cart}") |
▶실행 결과
| 바나나 삭제 후: ['사과', '딸기', '우유'] |
pop(): 마지막 위치의 데이터를 삭제하면서 그 값을 반환합니다. (위치를 지정할 수도 있습니다, 예: pop(0))
| # 5. pop(): 마지막 항목을 꺼내서(삭제하며) 반환받기 removed_item = cart.pop() print(f"제거된 상품: {removed_item}") print(f"pop 수행 후 장바구니: {cart}") |
▶실행 결과
| 제거된 상품: 우유 pop 수행 후 장바구니: ['사과', '딸기'] |
| # 6. 인덱싱과 수정: 특정 위치의 값 변경 (0번 인덱스 '사과'를 '청포도'로 변경) cart[0] = "청포도" print(f"상품 수정 후: {cart}") |
▶실행 결과
| 상품 수정 후: ['청포도', '딸기'] |
len(리스트): 리스트 안에 들어있는 전체 데이터의 개수를 알려줍니다.
| # 7. len(): 리스트의 길이(전체 아이템 개수) 확인 print(f"현재 장바구니에 담긴 상품 개수: {len(cart)}개") |
▶실행 결과
| 현재 장바구니에 담긴 상품 개수: 2개 |
| # 8. 소스코드 반복문(for)과 리스트 활용 print("\n[ 최종 장바구니 목록 ]") for index, item in enumerate(cart, 1): print(f"{index}. {item}") |
▶실행 결과
[ 최종 장바구니 목록 ]
|
리스트의 또 다른 강력한 기능인 정렬(Sorting), 뒤집기(Reverse), 값 찾기(Index/Count), 그리고 리스트를 한눈에 처리할 수 있는 리스트 컴프리헨션(List Comprehension)까지 활용해 볼 수 있는 '점수 관리 및 통계 프로그램' 예제를 준비했습니다. 학생들의 시험 점수를 리스트에 담아 관리하고 분석하는 시나리오입니다.
📊 실습 예제: 학생 점수 분석 및 관리 프로그램
| # 1. 초기 점수 리스트 생성 scores = [85, 92, 75, 92, 60, 88] print(f"학생들 초기 점수: {scores}\n") |
▶실행 결과
| 학생들 초기 점수: [85, 92, 75, 92, 60, 88] |
count(값): 리스트 안에서 해당 값이 몇 번 등장하는지 갯수를 셉니다.
| # 2. count(): 특정 값이 리스트에 몇 개 있는지 확인 (92점이 몇 명인지) count_92 = scores.count(92) print(f"92점을 받은 학생 수: {count_92}명") |
▶실행 결과
| 92점을 받은 학생 수: 2명 |
index(값): 지정한 값이 몇 번째 인덱스에 위치하는지 그 위치(숫자)를 반환합니다.
| # 3. index(): 특정 값이 처음으로 나타나는 위치(인덱스) 찾기 (첫 75점의 위치) index_75 = scores.index(75) print(f"75점인 학생의 위치(인덱스): {index_75}\n") |
▶실행 결과
| 75점인 학생의 위치(인덱스): 2 |
sort(): 리스트의 데이터를 순서대로 정렬합니다. (reverse=True를 넣으면 내림차순이 됩니다.
| # 4. sort(): 점수를 오름차순(낮은 점수부터)으로 정렬 scores.sort() print(f"오름차순 정렬 후: {scores}") |
▶실행 결과
| 오름차순 정렬 후: [60, 75, 85, 88, 92, 92] |
reverse(): 값의 크기와 상관없이 현재 리스트의 순서만 정반대로 뒤집습니다.
| # 6. reverse(): 리스트 순서를 단순히 거꾸로 뒤집기 scores.reverse() print(f"순서 뒤집기(reverse) 후: {scores}\n") |
▶실행 결과
| 순서 뒤집기(reverse) 후: [92, 92, 88, 85, 75, 60] |
리스트 컴프리헨션([표현식 for 변수 in 리스트]): 기존 리스트를 순회하며 간단하게 새로운 리스트를 만들어내는 파이썬 고유의 강력한 문법입니다.
| # 7. 리스트 컴프리헨션(List Comprehension): 모든 점수에 5점씩 가산점 부여하기 # (파이썬에서 리스트를 다룰 때 가장 유용하고 자주 쓰이는 기법입니다) bonus_scores = [score + 5 for score in scores] print(f"기존 점수: {scores}") print(f"가산점 5점 부여 후 점수: {bonus_scores}\n") |
▶실행 결과
| 기존 점수: [92, 92, 88, 85, 75, 60] 가산점 5점 부여 후 점수: [97, 97, 93, 90, 80, 65] |
sum(), max(), min(): 리스트의 합계, 최댓값, 최값을 쉽게 구할 수 있는 내장 함수입니다.
| # 8. 통계 함수 활용 (sum, max, min) print(f"가산점 적용 후 총점: {sum(bonus_scores)}점") print(f"가산점 적용 후 최고점: {max(bonus_scores)}점") print(f"가산점 적용 후 최저점: {min(bonus_scores)}점") |
▶실행 결과
| 가산점 적용 후 총점: 522점 가산점 적용 후 최고점: 97점 가산점 적용 후 최저점: 65점 |
조금 더 재미있고 실용적인 '영화 찜하기 및 검색 관리 프로그램' 예제를 준비했습니다.
실생활에서 리스트를 활용해 데이터를 필터링(조건에 맞는 것만 골라내기)하고 중복을 제거하는 등의 고급 기능들을 어떻게 쓰는지 함께 살펴볼까요?
🎬 실습 예제: 영화 찜하기 및 관리 프로그램
| # 1. 사용자가 찜한 영화 목록 (중복된 데이터가 우연히 들어갔다고 가정) wishlist = ["인터스텔라", "어벤져스", "인셉션", "어벤져스", "기생충", "매트릭스"] print(f"초기 찜한 목록: {wishlist}\n") |
▶실행 결과
| 학생들 초기 점수: [ "인터스텔라", "어벤져스", "인셉션", "어벤져스", "기생충", "매트릭스" ] |
set(리스트) & list(): 리스트 내의 중복된 값을 깔끔하게 제거할 때 사용하는 대표적인 변환 테크닉입니다.
| # 2. set()과 list(): 중복 제거하기 # (리스트에서 중복을 없애고 싶을 때 세트로 바꿨다가 다시 리스트로 변환하는 기법을 자주 씁니다) wishlist = list(set(wishlist)) print(f"중복 제거 후 목록: {wishlist}\n") |
▶실행 결과
| 중복 제거 후 목록: ['매트릭스', '인셉션', '기생충', '인터스텔라', '어벤져스'] |
[표현식 for 변수 in 리스트 if 조건]: 조건문(if)을 결합한 리스트 컴프리헨션을 사용하면, 기존 리스트에서 원하는 데이터만 필터링해서 새로운 리스트로 쏙 뽑아낼 수 있습니다.
| # 3. in 연산자: 특정 영화가 찜 목록에 있는지 확인하기 search_movie = "인셉션" if search_movie in wishlist: print(f"'{search_movie}'은(는) 찜 목록에 있습니다!") else: print(f"'{search_movie}'은(는) 찜 목록에 없습니다.") |
▶실행 결과
| '인셉션'은(는) 찜 목록에 있습니다! |
| # '아바타'도 확인해보기 if "아바타" in wishlist: print("'아바타'은(는) 찜 목록에 있습니다!") else: print("'아바타'은(는) 찜 목록에 없습니다.\n") |
▶실행 결과
| '아바타'은(는) 찜 목록에 없습니다. |
| # 4. 조건을 붙인 리스트 컴프리헨션: 글자 수가 5글자 이상인 영화만 골라내기 long_title_movies = [movie for movie in wishlist if len(movie) >= 5] print(f"글자 수가 5글자 이상인 영화: {long_title_movies}\n") |
참고 : [movie for movie in wishlist if len(movie) >= 5]
이 코드는 다음과 같은 일반 for 문과 정확히 똑같은 역할을 합니다.
long_title_movies = []
for movie in wishlist: # <- 여기서 만든 movie 변수
if len(movie) >= 5: # <- 조건문에서 movie를 활용
long_title_movies.append(movie)
동작 방식: wishlist 리스트에 들어있는 영화 제목들을 하나씩 차례대로 꺼내서 movie라는 이름의 변수에 담는 것입니다.
▶실행 결과
| 글자 수가 5글자 이상인 영화: ['인터스텔라', '어벤져스'] |
clear(): 리스트 안의 모든 요소를 한 번에 삭제하여 빈 리스트로 만듭니다.
| # 5. clear(): 찜 목록 전체 비우기 wishlist.clear() print(f"전체 비우기 후 찜 목록: {wishlist}") |

by lionkk@gmail.com
'업무 자동화 > python' 카테고리의 다른 글
| 기본 데이터.csv → 분석 데이터로 계산 하기 (0) | 2026.08.03 |
|---|---|
| 특정 종목의 기본 데이터 가져오기 (0) | 2026.08.03 |
| 파이썬 학습] 리스트 사용법 배우기 (0) | 2026.08.01 |
| 파이썬 학습] 반복문 사용 방법 (0) | 2026.07.30 |
| 파이썬 학습] 변수 (Variable) (0) | 2026.07.30 |