파이썬 시퀀스 자료형 개요
파이썬의 기본 시퀀스(sequence) 자료형에는 리스트(list), 튜플(tuple), 레인지(range)가 있습니다. 이 외에도 바이너리 데이터(binary data)와 텍스트 문자열(text string) 같은 추가적인 시퀀스 객체들이 존재합니다.
시퀀스 자료형 객체에는 값의 변경 가능(mutable) 여부와 관계없이 공통으로 사용할 수 있는 연산들이 많습니다. 대표적인 연산과 함수는 다음 표와 같습니다.
| 번호 | 연산/함수 및 설명 |
|---|---|
| 1 | x in seq x가 시퀀스 seq 안에 존재하면 True, 없으면 False를 반환합니다. |
| 2 | x not in seq x가 시퀀스 seq 안에 존재하면 False, 없으면 True를 반환합니다. |
| 3 | x + y 두 시퀀스 x와 y를 이어 붙여(연결하여) 새로운 시퀀스를 만듭니다. |
| 4 | x * n 또는 n * x 시퀀스 x를 n번 반복한 새로운 시퀀스를 생성합니다. |
| 5 | seq[i] 시퀀스의 i번째 항목을 반환합니다. |
| 6 | seq[i:j] 인덱스 i부터 j 앞까지 해당하는 구간을 잘라냅니다(슬라이싱). |
| 7 | seq[i:j:k] 인덱스 i부터 j 앞까지 k 간격으로 건너뛰며 슬라이싱합니다. |
| 8 | len(seq) 시퀀스의 길이, 즉 요소의 개수를 반환합니다. |
| 9 | min(seq) 시퀀스에서 가장 작은 값을 반환합니다. |
| 10 | max(seq) 시퀀스에서 가장 큰 값을 반환합니다. |
| 11 | seq.index(x[, i[, j]]) x가 처음 나타나는 인덱스를 반환합니다. i와 j를 지정하면 해당 범위 내에서만 검색합니다. |
| 12 | seq.count(x) 시퀀스 안에서 x가 나타나는 횟수를 반환합니다. |
| 13 | seq.append(x) 시퀀스 맨 끝에 x를 추가합니다. |
| 14 | seq.clear() 시퀀스의 모든 내용을 삭제합니다. |
| 15 | seq.insert(i, x) 인덱스 i 위치에 x를 삽입합니다. |
| 16 | seq.pop([i]) i 위치의 항목을 반환하면서 시퀀스에서 제거합니다. 인덱스를 생략하면 마지막 요소를 대상으로 합니다. |
| 17 | seq.remove(x) 시퀀스에서 처음으로 나타나는 x를 제거합니다. |
| 18 | seq.reverse() 리스트의 요소 순서를 거꾸로 뒤집습니다. |
참고: 13번부터 18번까지의 메서드(append, clear, insert, pop, remove, reverse)는 리스트처럼 내용을 수정할 수 있는 가변(mutable) 시퀀스 전용입니다. 튜플과 같은 불변(immutable) 시퀀스에는 사용할 수 없습니다.
예제 코드
myList1 = [10, 20, 30, 40, 50]
myList2 = [56, 42, 79, 42, 85, 96, 23]
if 30 in myList1:
print('30 is present')
if 120 not in myList1:
print('120 is not present')
print(myList1 + myList2) #두 리스트 연결
print(myList1 * 3) #myList1을 세 번 반복
print(max(myList2))
print(myList2.count(42)) #42는 리스트에 두 번 등장
print(myList2[2:7])
print(myList2[2:7:2])
myList1.append(60)
print(myList1)
myList2.insert(5, 17)
print(myList2)
myList2.pop(3)
print(myList2)
myList1.reverse()
print(myList1)
myList1.clear()
print(myList1)
실행 결과
30 is present 120 is not present [10, 20, 30, 40, 50, 56, 42, 79, 42, 85, 96, 23] [10, 20, 30, 40, 50, 10, 20, 30, 40, 50, 10, 20, 30, 40, 50] 96 2 [79, 42, 85, 96, 23] [79, 85, 23] [10, 20, 30, 40, 50, 60] [56, 42, 79, 42, 85, 17, 96, 23] [56, 42, 79, 85, 17, 96, 23] [60, 50, 40, 30, 20, 10] []
주요 결과 해설
- in / not in 연산자: 30은 myList1에 포함되어 있어 '30 is present'가 출력되고, 120은 없으므로 '120 is not present'가 출력됩니다.
- + 연산자: myList1과 myList2를 이어 붙인 새로운 리스트가 생성됩니다.
- * 연산자: myList1의 요소들이 3번 반복된 새로운 리스트가 만들어집니다.
- max()와 count(): myList2의 최댓값은 96이며, 42는 두 번 등장하므로 count(42)는 2를 반환합니다.
- 슬라이싱: myList2[2:7]은 인덱스 2부터 6까지의 요소를 추출하고, myList2[2:7:2]는 두 칸씩 건너뛰며 추출합니다.
- append / insert / pop / reverse / clear: 원본 리스트가 직접 수정되며, 마지막에 clear()를 호출하면 빈 리스트 []가 됩니다.