
리스트 자료형
리스트란?
지금까지 우리는 숫자와 문자열에 대해서 알아보았다. 하지만 숫자와 문자열만으로 프로그래밍을 하기엔 부족한 점이 많다.
예를 들어 1부터 10까지의 숫자 중 홀수 모음인 1,3,5,7,9의 집합을 생각해 보자.
이런 숫자 모음을 숫자나 문자열로 표현하기는 쉽지 않다. 이런 불편함을 해소할 수 있는 자료형이 리스트(List)이다.
리스트를 만들 때는 아래에서 보는 것과 같이 대괄호([ ])로 감싸 주고 각 요솟값은 쉽표(,)로 구분해 준다.
ex) 리스트명 = [ 요소1, 요소2, 요소3, ...]
## 리스트명
odd = [1, 3, 5, 7, 9]
여러 가지 리스트의 생김새를 살펴보자.
## 여러 가지 리스트
a = [ ]
b = [1, 2, 3]
c = ['Life', 'is', 'too', 'short']
리스트의 인덱싱과 슬라이싱
리스트의 인덱싱과 슬라이싱
리스트도 문자열처럼 인덱싱과 슬라이싱이 가능하다.
○ 리스트의 인덱싱
리스트 역시 문자열처럼 인덱싱 적용할 수 있다. 먼저 a 변수에 [1, 2, 3]값을 설정한다.
a[0]은 리스트 a의 첫 번째 요솟값을 말한다.
첫 번째 요소인 a[0]와 세 번째 요소인 a[2]의 값을 더한 것이다.
추가로 a[-1]은 문자열에서와 마찬가지로 리스트 a의 마지막 요솟값을 말한다.
## 리스트의 인덱싱
a = [1, 2, 3]
a
→ [1, 2, 3]
a[0]
→ 1
a[0] + a[2]
→ 4
이번에는 리스트 a를 숫자와 다른 리스트인 ['a', 'b', 'c']를 포함하도록 만들어 보자.
아래와 같이 ['a', 'b', 'c']는 하나의 요소로 인식한다.
## 리스트의 인덱싱
a = [1, 2, 3, ['a', 'b', 'c']]
a[0]
→ 1
a[-1]
→ ['a', 'b', 'c']
a[3]
→ ['a', 'b', 'c']
만약 ['a', 'b', 'c']에서 'a' 값을 인덱싱을 사용해 끄집어 내고 싶으면 다음과 같이 작성한다.
## 리스트의 인덱싱
a = [1, 2, 3, ['a', 'b', 'c']]
a[3][0]
→ 'a'
a[3][1]
→ 'b'
a[3][2]
→ 'c'
○ 리스트의 슬라이싱
문자열과 마찬가지로 리스트에서도 슬라이싱 기법을 적용할 수 있다. 문자열에서 사용법과 완전히 동일하다.
## 리스트의 슬라이싱
a = [1, 2, 3, 4, 5]
a[0:2]
→ [1, 2]
a = "12345"
a[0:2]
→ '12'
리스트 연산하기
리스트 연산이란?
문자열과 마찬가지로 리스트 역시 +기호를 사용해서 더할 수 있고 *기호를 사용해서 반복할 수 있다.
○ 리스트 더하기
리스트 사이에서 + 기호는 2개의 리스트를 합치는 기능을 한다.
## 리스트 더하기
a = [1, 2, 3]
b = [4, 5, 6]
a + b
→ [1, 2, 3, 4, 5, 6]
○ 리스트 반복하기
아래는 [1, 2, 3]리스트가 세 번 반복되어 새로운 리스트를 만드는 모습을 보여준다.
"abc"*3 = "abcabcabc"가 되는 것과 같은 이치이다.
## 리스트 반복하기
a = [1, 2, 3]
a * 3
→ [1, 2, 3, 1, 2, 3, 1, 2, 3]
○ 리스트 길이 구하기
리스트 길이를 구하기 위해서는 다음처럼 len 함수를 사용해야 한다.
## 리스트 길이구하기
a = [1, 2, 3]
len(a)
→ 3
리스트의 수정과 삭제
○ 리스트에서 값 수정 및 삭제
아래 그림과 같이 따라해 보자. del 함수를 사용하면 리스트의 요소를 삭제할 수 있다.
이때 del 함수는 파이썬이 자체적으로 가지고 있는 삭제 함수이며 다음과 같이 사용한다. ex) ' del 객체 '
## 리스트 수정 및 삭제
a = [1, 2, 3]
a[2] = 4
a
→ [1, 2, 4]
a = [1, 2, 3]
del a[1]
a
→ [1, 3]
아래 예시처럼 슬라이싱 기법을 사용하여 리스트의 요소 여러 개를 한꺼번에 삭제할 수도 있다.
## 리스트 수정 및 삭제(슬라이싱이용)
a = [1, 2, 3, 4, 5]
del a[2:]
a
→ [1, 2,]
리스트의 요소를 삭제하는 방법에는 2가지가 더 있다.
그것은 리스트의 remove와 pop함수를 사용하는 방법인데 이것에 대해서는 바로 이어지는 리스트 관련 함수에서 설명한다.
리스트 관련 함수
리스트 관련 함수란?
문자열과 마찬가지로 리스트 변수 이름 뒤에 '.'를 붙여서 여러 가지 리스트 관련 함수를 사용할 수 있다.
유용하게 사용되는 리스트 관련 함수 몇 가지에 대해서만 알아보자.
○ 리스트에 요소 추가(append)
'덧붙이다, 첨부하다'라는 뜻을 가지고 있으며, append(x)는 리스트의 맨 마지막에 x를 추가하는 함수이다.
a.append(4)는 a 리스트에서 4를 추가한 것이고, a.append([5,6])은 4를 추가한 리스트에 리스트[5,6]을 추가한 모습이다.
## 리스트 요소 추가(append)
a = [1, 2, 3]
a.append(4)
a
→ [1, 2, 3, 4]
a.append([5, 6])
→ [1, 2, 3, 4, [5, 6]]
○ 리스트 정렬(sort)
sort 함수는 리스트의 요소를 순서대로 정렬해 준다. 문자 역시 알파벳 순서로 정렬할 수 있다.
## 리스트 정렬(sort)
a = [1, 4, 3, 2]
a.sort()
a
→ [1, 2, 3, 4]
a = ['a', 'c', 'b']
a.sort()
→ ['a', 'b', 'C']
○ 리스트 뒤집기(reverse)
reverse 함수는 리스트를 역순으로 뒤집어 준다.
이때 순서대로 정렬 후 역순으로 정렬하는 것이 아니라 현재의 리스트를 그대로 거꾸로 뒤집는다.
## 리스트 뒤집기(reverse)
a = ['a', 'c', 'b']
a.reverse()
a
→ ['b', 'c', 'a']
○ 위치 반환(index)
index(x) 함수는 리스트에 x 값이 있으면 x의 위치 값을 돌려준다.
아래 예시에서 a에 있는 숫자 3의 위치는 a[2]이므로 2를 돌려주고, 숫자 1의 위치는 a[0]이므로 0을 돌려준다.
## 리스트 위치 반환(index)
a = [1, 2, 3]
a.index(3)
→ 2
a.index(1)
→ 0
○ 리스트에 요소 삽입(insert)
insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수이다. 파이썬에서는 숫자를 0부터 센다는 것에 유의하자.
## 리스트에 요소 삽입(insert)
a = [1, 2, 3]
a.insert(0, 4)
print(a)
→ [4, 1, 2, 3]
a.insert(3, 5)
print(a)
→ [4, 1, 2, 5, 3]
○ 리스트 요소 제거(remove)
remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다.
a가 3이라는 값을 2개 가지고 있을 경우 첫 번째 3만 제거되는 것을 알 수 있다. remove(3)을 한 번 더 실행 후 3이 삭제된다.
## 리스트 요소 제거(remove)
a = [1, 2, 3, 1, 2, 3]
a.remove(3)
a
→ [1, 2, 3, 2, 3]
a.remove(3)
a
→ [1, 2, 1, 2]
○ 리스트 요소 끄집어내기(pop)
pop()은 인덱스를 지정하지 않으면 리스트의 마지막 요소를 삭제하고 그 값을 반환합니다.
인덱스를 지정하면 해당 인덱스의 요소를 삭제하고 반환합니다.
## 리스트 요소 끄집어내기(pop)
a = [1, 2, 3]
a.pop()
→ 3
a
→ [1, 2]
a = [1, 2, 3]
a.pop(1)
→ 2
a
→ [1, 3]
○ 리스트에 포함된 요소 x의 개수 세기(count)
count(x)는 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수이다.
1이라는 값이 리스트 a에 2개 들어 있으므로 2를 돌려준다.
## 리스트에 포함된 요소 x의 개수 세기(count)
a = [1, 2, 3, 1]
a.count(1)
→ 2
○ 리스트 확장(extend)
extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.
## 리스트 확장(extend)
a = [1, 2, 3]
a.extend([4, 5])
a
→ [1, 2, 3, 4, 5]
b = [6, 7]
a.extend(b)
a
→ [1, 2, 3, 4, 5, 6, 7]
리스트 자료형에 대한 연산과 수정 및 삭제, 관련 함수까지 알아보았다.
리스트 자료형 역시 문자열 자료형과 유사한 점이 많아 부담스럽지 않게 받아들일 수 있었다.
다음 연구 주제는 튜플 자료형과 딕셔너리 자료형이다.
'연구노트 > Python' 카테고리의 다른 글
| Python 제어문(while문) (1) | 2025.04.08 |
|---|---|
| Python 제어문(if문) (1) | 2025.04.07 |
| Python 집합 자료형, 불 자료형 (0) | 2025.04.07 |
| Python 튜플 자료형, 딕셔너리 자료형 (0) | 2025.04.07 |
| Python 기초 (1) | 2025.04.07 |