본문 바로가기
  • You find inspiration to create your own path !
업무 자동화/python

파이썬 학습] 리스트 활용

by ToolBOX01 2026. 8. 3.
반응형

■ 리스트(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}")

▶실행 결과

[ 최종 장바구니 목록 ]
  1. 청포도
  2. 딸기

 


리스트의 또 다른 강력한 기능인 정렬(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

반응형