시퀀스 자료형 완전 정복: 리스트(list)의 모든 것
🧮 시퀀스 자료형 완전 정복: 리스트(list)의 모든 것
파이썬에서 데이터를 순서대로 저장하고 싶다면? 가장 먼저 떠올려야 할 건 바로 리스트(list)입니다!
안녕하세요, 파이썬 초보자 여러분 😊
프로그래밍을 처음 시작하셨다면 데이터를 저장하는 방법부터 배우는 게 중요하죠.
그 중에서도 시퀀스 자료형 중 하나인 리스트는 정말 자주 쓰이는 필수 개념이에요.
이번 포스트에서는 리스트의 기본 개념부터 생성, 인덱싱, 슬라이싱, 함수 활용까지 예제와 함께 자세히 알려드릴게요.
단순히 문법을 외우는 게 아니라 "왜 그렇게 사용하는지"를 이해할 수 있도록 설명드릴 테니,
끝까지 따라와 주세요!
목차
1. 리스트란 무엇인가요? 📘
파이썬에서 리스트(list)는 여러 개의 데이터를 순서대로 저장할 수 있는 자료형이에요.
즉, 숫자, 문자, 또 다른 리스트까지 하나의 변수 안에 여러 값을 담고 싶을 때 사용하는 도구죠.
"리스트는 책의 목차처럼 순서대로 데이터를 담고 있고, 원하는 항목을 '몇 번째인지'로 찾아낼 수 있다!"
이렇게 생각하시면 쉬워요.
리스트의 기본 문법
# 리스트 기본 구조
리스트이름 = [값1, 값2, 값3, ...]
예제: 숫자와 문자열을 담은 리스트
numbers = [1, 2, 3, 4, 5]
words = ["apple", "banana", "cherry"]
mix = [1, "two", 3.0, [4, 5]]
위 예제처럼 리스트는 숫자, 문자열, 심지어 또 다른 리스트까지도 요소로 가질 수 있어요.
이게 바로 리스트의 가장 큰 장점 중 하나예요.
왜 리스트가 필요할까?
- 하나의 변수에 여러 데이터를 저장하고 반복문으로 처리하고 싶을 때
- 다양한 자료형을 섞어서 저장하고 싶을 때
- 데이터를 쉽게 추가하거나 삭제해야 할 때
리스트를 사용할 수 있는 대표적인 상황
상황 | 리스트 활용 예시 |
---|---|
학생들의 점수를 저장할 때 | scores = [85, 90, 78, 92] |
여러 장바구니 상품을 저장할 때 | cart = ["사과", "바나나", "딸기"] |
여러 명의 사용자 ID 저장 시 | user_ids = ["kim123", "lee456", "choi789"] |
이처럼 리스트는 데이터를 모아서 다루는 데 최적화된 자료형이에요.
다음 섹션에서는 리스트를 만드는 다양한 방법과 예제를 소개할게요.
직접 실습도 해볼 준비 되셨죠? ✨
2. 리스트 생성 방법과 다양한 예제 ✍️
리스트를 만드는 방법은 정말 다양해요.
기본적인 대괄호 문법 외에도 파이썬만의 직관적인 문법 덕분에 다양한 방식으로 리스트를 선언하고 활용할 수 있습니다.
지금부터 하나씩 예제와 함께 알아볼게요!
기본 리스트 생성 방법
# 숫자 리스트
numbers = [10, 20, 30, 40, 50]
# 문자열 리스트
fruits = ["apple", "banana", "cherry"]
# 혼합 리스트
mix = [1, "hello", 3.14, True]
# 리스트 안에 리스트 (중첩 리스트)
matrix = [[1, 2], [3, 4], [5, 6]]
보시다시피 리스트는 다양한 자료형을 함께 포함할 수 있어요.
숫자뿐만 아니라 문자열, 불(Boolean), 심지어 또 다른 리스트까지도 들어갈 수 있습니다.
리스트 생성 실습 예제
목적 | 리스트 코드 |
---|---|
빈 리스트 생성 | empty = [] 또는 empty = list() |
0부터 9까지의 숫자 리스트 | numbers = list(range(10)) |
5개의 'hi'가 담긴 리스트 | greetings = ["hi"] * 5 |
리스트 복사와 참조
리스트를 다른 변수에 대입하면 복사가 아닌 참조가 이루어집니다.
즉, 같은 리스트를 가리키는 거예요.
a = [1, 2, 3]
b = a
b[0] = 99
print(a) # 결과: [99, 2, 3]
위 코드처럼 b를 수정했는데 a도 함께 바뀌었죠? 이럴 땐 copy()
나 슬라이싱
을 활용해 복사할 수 있어요.
a = [1, 2, 3]
b = a.copy() # 또는 b = a[:]
b[0] = 99
print(a) # 결과: [1, 2, 3]
이제 다양한 리스트 생성 방법을 익혔으니,
다음 단계에서는 리스트의 핵심 기능인 인덱싱과 슬라이싱을 배워볼 차례입니다! 🎯
3. 리스트 인덱싱과 슬라이싱 🎯
리스트의 큰 장점 중 하나는 원하는 값을 순서로 접근할 수 있다는 점이에요.
이걸 가능하게 해주는 게 바로 인덱싱과 슬라이싱입니다.
헷갈릴 수도 있지만, 예제와 함께 익히면 금방 익숙해져요!
인덱싱(Indexing)이란?
인덱싱은 리스트에서 특정 위치의 값을 가져오는 방법이에요.
파이썬의 인덱스는 0부터 시작합니다.
fruits = ["apple", "banana", "cherry"]
print(fruits[0]) # apple
print(fruits[2]) # cherry
print(fruits[-1]) # cherry (마지막 요소)
-
[0]
: 첫 번째 요소 -
[-1]
: 마지막 요소
슬라이싱(Slicing)이란?
슬라이싱은 리스트의 일부 구간을 잘라내는 기능이에요.
리스트[시작:끝]
형태로 사용되며, 끝 인덱스는 포함하지 않아요.
numbers = [0, 1, 2, 3, 4, 5, 6]
print(numbers[2:5]) # [2, 3, 4]
print(numbers[:3]) # [0, 1, 2]
print(numbers[4:]) # [4, 5, 6]
중요한 점은 끝 인덱스는 포함되지 않는다는 것!
그래서 [2:5]
는 2, 3, 4만 포함돼요.
슬라이싱 응용 예제
data = ["a", "b", "c", "d", "e", "f"]
print(data[::2]) # ['a', 'c', 'e'] : 2칸 간격
print(data[::-1]) # ['f', 'e', 'd', 'c', 'b', 'a'] : 역순
슬라이싱에서 [::간격]
을 지정하면 n칸씩 건너뛰며 리스트를 자를 수도 있어요.
또한 [::-1]
은 리스트를 뒤집는 간단한 방법이기도 하죠!
정리: 인덱싱 vs 슬라이싱
구분 | 설명 | 예시 |
---|---|---|
인덱싱 | 특정 위치의 하나의 값 반환 | list[2] → 3번째 값 |
슬라이싱 | 여러 값을 범위로 잘라 반환 | list[1:4] → 2~4번째 값 |
이제 리스트에서 원하는 데이터를 꺼내는 데에는 무리가 없겠죠?
다음은 리스트를 더하고 곱하고, 길이를 재는 연산 기능을 배워봅시다 ➕✖️
4. 리스트 연산과 활용법 ➕✖️
리스트는 단순히 데이터를 저장하는 데 그치지 않고, 다양한 연산을 통해 데이터를 조작할 수 있어요.
더하기, 곱하기, 길이 측정 같은 기본적인 연산부터 응용까지 차근차근 살펴볼게요!
리스트 더하기(+) - 리스트 합치기
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b
print(c) # [1, 2, 3, 4, 5, 6]
+ 연산자를 사용하면 두 리스트를 연결할 수 있어요.
문자열에서 "Hello" + "World"가 "HelloWorld"가 되는 것처럼 리스트도 이어집니다.
리스트 곱하기(*) - 반복 생성
a = ["Hi"]
b = a * 3
print(b) # ['Hi', 'Hi', 'Hi']
* 연산자는 리스트를 여러 번 반복해서 새로운 리스트를 만들어요.
초기화된 리스트를 만들 때도 유용하게 쓰인답니다.
리스트 길이 구하기 - len()
함수
a = [10, 20, 30, 40]
print(len(a)) # 4
len()
은 리스트의 요소 개수를 알려주는 함수예요.
문자열, 튜플, 딕셔너리, 세트 등에도 공통적으로 사용됩니다.
리스트 비교 및 포함 확인
a = [1, 2, 3]
b = [1, 2, 3]
print(a == b) # True
print(2 in a) # True
print(4 not in a) # True
리스트는 비교도 되고, in, not in을 통해 특정 값이 포함되어 있는지도 쉽게 확인할 수 있어요.
리스트 연산 요약표
연산자 | 설명 | 예시 |
---|---|---|
+ | 리스트 연결 | [1,2] + [3,4] → [1,2,3,4] |
* | 리스트 반복 | [0] * 4 → [0,0,0,0] |
len() | 길이 반환 | len([1,2,3]) → 3 |
in / not in | 값 포함 여부 확인 | 2 in [1,2,3] → True |
지금까지 리스트 연산의 기본기를 익혔다면,
다음은 실전에서 더 많이 쓰이는 리스트 전용 함수들을 알아볼 시간입니다 🔧
계속 따라와 주세요!
5. 꼭 알아야 할 리스트 함수들 🔧
파이썬 리스트는 정말 유용한 내장 함수들을 많이 제공해요.
이 함수들만 제대로 활용해도 리스트 활용도가 훨씬 높아집니다! 자, 하나씩 예제를 통해 알아봅시다 😊
요소 추가: append()
, insert()
fruits = ["apple", "banana"]
fruits.append("cherry")
print(fruits) # ['apple', 'banana', 'cherry']
fruits.insert(1, "orange")
print(fruits) # ['apple', 'orange', 'banana', 'cherry']
- append() : 리스트 마지막에 요소 추가
- insert(인덱스, 값) : 원하는 위치에 요소 삽입
요소 삭제: remove()
, pop()
, del
numbers = [10, 20, 30, 20, 40]
numbers.remove(20)
print(numbers) # [10, 30, 20, 40]
numbers.pop()
print(numbers) # [10, 30, 20]
del numbers[1]
print(numbers) # [10, 20]
- remove(x) : 첫 번째 x값 삭제
- pop() : 마지막 요소 꺼내고 삭제
- del : 특정 인덱스 요소 삭제
정렬과 뒤집기: sort()
, reverse()
nums = [5, 3, 9, 1]
nums.sort()
print(nums) # [1, 3, 5, 9]
nums.reverse()
print(nums) # [9, 5, 3, 1]
sort()
는 오름차순 정렬, reverse()
는 현재 순서를 뒤집어요.
sort(reverse=True)
로 내림차순도 가능합니다!
기타 유용한 함수
a = [1, 2, 3, 2, 4]
print(a.index(2)) # 1
print(a.count(2)) # 2
a.extend([5, 6])
print(a) # [1, 2, 3, 2, 4, 5, 6]
- index(x) : x의 첫 번째 위치 반환
- count(x) : 리스트에 x가 몇 번 나오는지
- extend(리스트) : 리스트 연결
리스트 함수 요약 정리표
함수 | 기능 설명 | 예시 |
---|---|---|
append() | 요소 추가 (맨 뒤) | a.append(10) |
insert() | 요소 삽입 (특정 위치) | a.insert(2, 99) |
remove() | 첫 번째 해당 값 삭제 | a.remove(3) |
pop() | 요소 꺼내고 삭제 | a.pop() |
sort() | 정렬 | a.sort() |
extend() | 리스트 확장 | a.extend([5,6]) |
이제 리스트 관련 함수는 마스터!
다음 장에서는 튜플과 딕셔너리와의 차이점까지 정리해볼게요.
리스트가 왜 자주 쓰이는지 비교해보면 더 확실히 와닿을 거예요 ⚖️
6. 튜플·딕셔너리와 리스트 비교 분석 ⚖️
리스트만큼 자주 언급되는 시퀀스 자료형이 바로 튜플(tuple)과 딕셔너리(dictionary)예요.
이 세 가지는 헷갈리기 쉬운데요,
지금부터 차이점과 언제 써야 할지를 정리해드릴게요.
리스트 vs 튜플
항목 | 리스트 (list) | 튜플 (tuple) |
---|---|---|
기호 | [ ] (대괄호) | ( ) (소괄호) |
수정 가능 여부 | O (mutable) | X (immutable) |
용도 | 자주 변하는 데이터 | 변경되지 않는 고정값 |
리스트는 변경 가능하고, 튜플은 변경 불가능하다는 게 핵심이에요!
데이터 보호가 중요하다면 튜플이 적합하고, 자주 바뀌는 값이라면 리스트가 적합하죠.
리스트 vs 딕셔너리
항목 | 리스트 (list) | 딕셔너리 (dict) |
---|---|---|
데이터 구조 | 값의 나열 (순서 기반) | 키-값 쌍 (연관성 기반) |
접근 방법 | 인덱스(0, 1, 2…) | Key로 접근 |
예시 | scores = [80, 90] | scores = {"국어":80, "영어":90} |
딕셔너리는 순서보다 관계(연관성)가 중요할 때 유용해요.
예를 들어 학생 이름과 점수를 매칭해야 할 때는 리스트보다 딕셔너리가 더 적합합니다!
정리: 리스트 vs 튜플 vs 딕셔너리
자료형 | 변경 가능 여부 | 접근 방식 | 사용 목적 |
---|---|---|---|
리스트 | 가능 | 인덱스 | 순서 있는 데이터 저장 |
튜플 | 불가능 | 인덱스 | 고정값 보호 |
딕셔너리 | 가능 | Key | 연관 데이터 저장 |
이제 리스트가 언제 유리한지, 튜플과 딕셔너리와는 어떤 차이가 있는지 확실히 이해되셨죠?
다음은 마지막으로 전체 내용을 정리하며, 리스트를 활용한 실전 팁까지 공유드릴게요!
📝 리스트는 파이썬 입문의 필수 열쇠!
지금까지 파이썬 리스트의 기본부터 고급 활용까지 전반적인 내용을 정리해보았습니다.
처음에는 리스트가 그저 데이터를 담는 그릇처럼 느껴질 수 있지만, 실제로는 파이썬 프로그래밍에서 데이터를 다루는 거의 모든 곳에서 등장합니다.
리스트는 단순한 기능을 넘어서, 반복문, 조건문, 함수, 클래스 등과 함께 조합될 때 그 진가를 발휘해요.
이제 여러분은 리스트를 자유롭게 선언하고, 슬라이싱하고, 정렬하고, 수정할 수 있는 파이썬 사용자로 한 단계 성장하셨습니다! 🎉
앞으로도 리스트는 자주 등장하니, 이 글을 북마크 해두고 필요할 때마다 참고해주세요.
궁금한 점이 생기면 언제든지 댓글로 질문 주세요! 😊
다음 글에서는 파이썬 튜플과 딕셔너리의 실전 활용도 다뤄볼 예정입니다. 기대해주세요!