파이썬 리스트 완벽 정리: 초보도 한 번에 이해하는 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()는 원본을 정렬하고 아무것도 돌려주지 않아요. 그래서 result에 None이 담기는 거예요. 결과를 변수에 담고 싶으면 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)
돌려보시고, 물건을 더 추가하거나 순서를 바꿔보세요. 직접 손으로 쳐보는 게 눈으로 읽는 것보다 열 배는 남아요.
리스트 하나만 잘 써도 할 수 있는 게 꽤 많아요. 근데 쓰다 보면 "이 값은 절대 바뀌면 안 되는데" 싶을 때가 있고, "번호 말고 이름으로 꺼내고 싶은데" 싶을 때가 있거든요. 다음 글에서는 그럴 때 쓰는 튜플이랑 딕셔너리를 볼 거예요. 리스트랑 비슷해 보이지만 쓰임새가 조금씩 달라요.
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
'Application > Python' 카테고리의 다른 글
| [Python] 파이썬 함수 기초: def로 만들고 return으로 돌려받기 (0) | 2026.04.27 |
|---|---|
| [Python] 파이썬 튜플과 딕셔너리, 한 번에 정리 (0) | 2026.04.23 |
| [Python] 파이썬 반복문, for문과 while 완벽 정리 (0) | 2026.04.21 |
| [Python] 파이썬 조건문: if, elif, else 쉽게 이해하기 (0) | 2026.04.18 |
| [Python] 파이썬 input 함수, 사용자 입력 받는 법 완벽 정리 (0) | 2026.04.17 |