Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 시퀀스 자료형 완벽 정리: 주요 연산과 실습 예제


파이썬 시퀀스 자료형 개요

파이썬의 기본 시퀀스(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()를 호출하면 빈 리스트 []가 됩니다.