Application/Python

[Python] 파이썬 리스트 완벽 정리: 초보도 한 번에 이해하는 python list 사용법

devsalix 2026. 4. 22. 13:51
728x90

파이썬 리스트 완벽 정리: 초보도 한 번에 이해하는 python list 사용법

입문편이 여기서 마무리돼요. 변수, 자료형, 조건문, 반복문까지 달려오셨으면 이제 파이썬이 슬슬 눈에 익으실 거예요.

사실 지난번 반복문 글에서 for item in [1, 2, 3]: 이런 코드 잠깐 보셨잖아요. 그때 대괄호 안에 숫자를 쭉 나열한 그 친구, 그게 바로 오늘 주인공인 리스트예요. 그냥 스쳐 지나가듯 봤는데 오늘은 이걸 제대로 파볼 거예요.


파이썬 리스트란 무엇인가요

쇼핑하러 가기 전에 살 물건을 메모한다고 생각해보세요. 우유, 계란, 빵... 이걸 변수로 하나하나 만들면 이렇게 되겠죠.

item1 = "우유"   # 첫 번째 물건
item2 = "계란"   # 두 번째 물건
item3 = "빵"     # 세 번째 물건

 

딱 봐도 좀 귀찮죠. 물건이 20개면 어떡해요. 그래서 파이썬은 장바구니 같은 걸 준비해놨어요. 그게 리스트예요.

shopping = ["우유", "계란", "빵"]   # 대괄호로 감싸고 쉼표로 나열
print(shopping)                     # ['우유', '계란', '빵']

 

이름 하나 밑에 여러 개를 순서대로 담을 수 있어요. 문자열, 숫자, 불린을 섞어서 담아도 돼요.

mixed = ["철수", 25, True, 180.5]   # 자료형이 달라도 괜찮아요

python list 인덱스와 슬라이싱

리스트에서 특정 값을 꺼내려면 번호(인덱스) 로 불러내면 돼요. 근데 여기서 한 가지 꼭 기억해야 할 게 있어요.

번호는 0부터 시작합니다.

처음 배우실 때 이게 제일 헷갈리실 거예요. 저도 한참 헷갈렸거든요. 우리는 보통 하나, 둘, 셋 이렇게 세잖아요. 근데 컴퓨터는 영, 하나, 둘로 세요.

fruits = ["사과", "바나나", "딸기"]
print(fruits[0])    # 사과   ← 첫 번째가 0번
print(fruits[1])    # 바나나
print(fruits[-1])   # 딸기   ← 음수는 뒤에서부터

 

-1을 쓰면 맨 뒤에서부터 셀 수 있어요. 리스트가 길 때 특히 편해요.

여러 개를 한 번에 가져오고 싶으면 슬라이싱을 씁니다.

nums = [10, 20, 30, 40, 50]
print(nums[1:4])    # [20, 30, 40]   ← 4번은 포함 안 됨!
print(nums[:3])     # [10, 20, 30]
print(nums[2:])     # [30, 40, 50]
print(nums[::-1])   # [50, 40, 30, 20, 10]   ← 뒤집기

 

여기서 함정 하나. [1:4] 하면 1, 2, 3, 4번까지 네 개가 나올 것 같잖아요. 아니에요. 끝 번호는 포함이 안 돼요. "1번부터 4번 직전까지"라고 외우시면 편합니다.


리스트 사용법: 값 추가하고 삭제하기

리스트는 한 번 만들었다고 끝이 아니에요. 나중에 얼마든지 바꿀 수 있어요.

shopping = ["우유", "계란"]
shopping.append("빵")        # 맨 뒤에 추가
shopping.insert(0, "사과")   # 0번 자리에 끼워넣기
print(shopping)              # ['사과', '우유', '계란', '빵']

 

append는 그냥 맨 뒤에 하나 툭 던져 넣는 거고요, insert는 원하는 자리에 새치기하듯 끼워넣는 거예요.

지울 때는 이렇게 씁니다.

shopping.remove("계란")   # '계란'이라는 값을 찾아서 삭제
last = shopping.pop()     # 맨 뒤 하나 꺼내서 반환
print(last)               # 빵
print(shopping)           # ['사과', '우유']

 

remove는 이름으로 찾아서 지우고, pop은 꺼내면서 그 값을 돌려줘요. 돌려준다는 게 포인트예요. 꺼낸 값을 다시 어딘가에 쓸 수 있거든요.


파이썬 리스트, 알아두면 편한 기능들

매일같이 쓰게 되는 것들만 추려볼게요.

shopping = ["사과", "우유", "빵"]

print(len(shopping))         # 3   ← 개수 세기
print("우유" in shopping)    # True   ← 들어있나 확인

 

len()으로 몇 개 들어있는지 확인하고, in으로 특정 값이 있는지 물어볼 수 있어요. 이 두 개는 진짜 자주 씁니다.

정렬도 자주 하는데, 여기서 초보분들이 제일 많이 당황하는 지점이 나와요.

nums = [3, 1, 4, 1, 5, 9, 2, 6]

nums.sort()              # 원본을 정렬해버림
print(nums)              # [1, 1, 2, 3, 4, 5, 6, 9]

new_nums = sorted([3, 1, 2])   # 원본은 그대로, 새 리스트 반환
print(new_nums)                # [1, 2, 3]

 

sort()sorted()는 이름은 비슷한데 완전 다르게 동작해요. 이건 아래에서 따로 다시 짚을게요.

for문이랑 같이 쓰면 리스트의 진가가 나와요.

for item in shopping:
    print("-", item)   # 줄마다 출력

초보가 자주 하는 리스트 실수

이 부분 꼭 보고 가세요. 여기서 버그가 진짜 많이 나와요.

 

첫째, sort()의 반환값을 기대하는 실수.

nums = [3, 1, 2]
result = nums.sort()   # 이렇게 쓰면...
print(result)          # None   ← 어라?

 

sort()는 원본을 정렬하고 아무것도 돌려주지 않아요. 그래서 resultNone이 담기는 거예요. 결과를 변수에 담고 싶으면 sorted()를 쓰셔야 해요.

 

둘째, 리스트 복사 함정. 이게 제일 중요해요.

a = [1, 2, 3]
b = a              # 복사? 아니에요.
b.append(4)
print(a)           # [1, 2, 3, 4]   ← a도 바뀌었어요!

 

b = a 라고 쓰면 복사가 아니라 같은 리스트에 이름표를 하나 더 붙이는 거예요. 사물함은 하나인데 열쇠가 두 개 있는 느낌이죠. 진짜 복사하려면 이렇게 써야 해요.

b = a.copy()   # 또는 b = a[:]

 

셋째, 없는 인덱스 접근.

fruits = ["사과", "바나나"]
print(fruits[5])   # IndexError: list index out of range

 

두 개밖에 없는데 5번을 달라니까 당연히 에러가 나요. len()으로 확인하고 접근하시면 안전합니다.


직접 해보기

쇼핑 리스트 관리 프로그램을 직접 만들어보세요.

shopping = []                  # 빈 리스트로 시작
shopping.append("우유")        # 하나씩 담아봐요
shopping.append("계란")
shopping.append("빵")
print("현재 리스트:", shopping)

shopping.remove("계란")        # 집에 있었네, 빼자
print("수정 후:", shopping)

print("총", len(shopping), "개 사야 해요")

for item in shopping:
    print("-", item)

 

돌려보시고, 물건을 더 추가하거나 순서를 바꿔보세요. 직접 손으로 쳐보는 게 눈으로 읽는 것보다 열 배는 남아요.

리스트 하나만 잘 써도 할 수 있는 게 꽤 많아요. 근데 쓰다 보면 "이 값은 절대 바뀌면 안 되는데" 싶을 때가 있고, "번호 말고 이름으로 꺼내고 싶은데" 싶을 때가 있거든요. 다음 글에서는 그럴 때 쓰는 튜플이랑 딕셔너리를 볼 거예요. 리스트랑 비슷해 보이지만 쓰임새가 조금씩 달라요.


 


제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90