Python

시퀀스 자료형 완전 정복: 리스트(list)의 모든 것

코딩 코디네이터 2025. 4. 10. 10:00
반응형

🧮 시퀀스 자료형 완전 정복: 리스트(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 연관 데이터 저장

 

이제 리스트가 언제 유리한지, 튜플과 딕셔너리와는 어떤 차이가 있는지 확실히 이해되셨죠?

다음은 마지막으로 전체 내용을 정리하며, 리스트를 활용한 실전 팁까지 공유드릴게요!

 

 

📝  리스트는 파이썬 입문의 필수 열쇠!

지금까지 파이썬 리스트의 기본부터 고급 활용까지 전반적인 내용을 정리해보았습니다.

처음에는 리스트가 그저 데이터를 담는 그릇처럼 느껴질 수 있지만, 실제로는 파이썬 프로그래밍에서 데이터를 다루는 거의 모든 곳에서 등장합니다.

리스트는 단순한 기능을 넘어서, 반복문, 조건문, 함수, 클래스 등과 함께 조합될 때 그 진가를 발휘해요.

이제 여러분은 리스트를 자유롭게 선언하고, 슬라이싱하고, 정렬하고, 수정할 수 있는 파이썬 사용자로 한 단계 성장하셨습니다! 🎉

앞으로도 리스트는 자주 등장하니, 이 글을 북마크 해두고 필요할 때마다 참고해주세요.

 

궁금한 점이 생기면 언제든지 댓글로 질문 주세요! 😊

다음 글에서는 파이썬 튜플과 딕셔너리의 실전 활용도 다뤄볼 예정입니다. 기대해주세요!

반응형