본문 바로가기

시퀀스 자료형

1. 시퀀스 자료형

시퀀스 자료형(Sequence type)은 Python의 자료형 중 하나로, 여러 개의 항목들이 순서대로 나열된 구조를 나타내는 데이터 유형입니다. 시퀀스 자료형은 다음과 같은 공통적인 연산 및 특성을 가집니다.

시퀀스 자료형은 인덱싱, 슬라이싱, 연결(+), 반복(*) 등의 공통 연산을 지원합니다. 이 연산들은 모든 시퀀스 타입에서 동일하게 작동합니다.

Python에서 제공하는 연속된 데이터 타입인 시퀀스 자료형에는 다음과 같은 것들이 있습니다.

자료형가변성예시
리스트(List)가변[1, 2, 3]
문자열(String)불변'hello'
튜플(Tuple)불변(1, 2, 3)
범위(range)불변range(10)

이전에 공부했던 문자열 자료형을 예를 들어 시퀀스 자료형의 특징을 설명해 보도록 하겠습니다.

바이트와 바이트배열은 부록으로 두었습니다.

1.1 인덱싱 (Indexing)

각 항목은 고유한 인덱스를 통해 접근할 수 있습니다. 첫 번째 항목의 인덱스는 0이며, 그 다음 항목은 1, 2, ... 순으로 증가합니다. 음수 인덱스를 사용하여 끝에서부터 역으로 접근할 수도 있습니다.

example = 'abcde'
print(example[0]) # 출력: a
print(example[2]) # 출력: c

1.2 슬라이싱 (Slicing)

시퀀스의 일부분을 선택하여 새로운 시퀀스를 생성할 수 있습니다.

example = 'abcde'
print(example[1:3]) # 출력: bc
print(range(10)[3]) # 출력: 3
print(range(100)[::5]) # 출력: range(0, 100, 5)

1.3 특정 항목의 포함 여부(Member)

in 및 not in 키워드를 사용하여 시퀀스에 특정 항목이 포함되어 있는지 확인할 수 있습니다.

example = 'abcde'
print('a' in example) # 출력: True
print('z' in example) # 출력: False

1.4 연결 및 반복 (Concatenation and Repetition)

+ 연산자를 이용해 시퀀스를 연결할 수 있으며, * 연산자를 이용하여 반복할 수 있습니다.

example1 = 'abcde'
example2 = 'f'
print(example1 + example2) # 출력: abcdef
print(example2 * 3)        # 출력: fff

1.5 내장 함수

len(), max(), min(), sum() 등의 여러 내장 함수를 지원합니다. 내장 함수는 각 자료형에서 더 깊이 다뤄보겠습니다. 이름이 비슷한 count()는 내장 함수가 아니라 시퀀스가 가지고 있는 메서드입니다.

example = 'abcde'
print(len(example))  # 출력: 5
print(min(example))  # 출력: a
print(max(example))  # 출력: e

시퀀스 자료형들은 Python에서 매우 중요한 역할을 하며, 다양한 연산 및 기능을 제공하여 개발자에게 유용하게 활용됩니다.

2. 시퀀스 자료형의 패킹과 언패킹

파이썬의 패킹(packing)과 언패킹(unpacking)은 데이터를 그룹화하거나 그룹에서 분해하는 간결한 방법을 제공합니다. 이러한 기능은 코드를 더 간결하고 가독성 있게 만들어 줍니다.

2.1 패킹 (Packing)

패킹은 여러 개의 데이터를 하나의 변수에 담는 과정을 의미합니다. 튜플 패킹을 통해 살펴보겠습니다.

# 튜플 패킹
packed_tuple = 1, 2, 3, 4
print(packed_tuple)  # 출력: (1, 2, 3, 4)

2.2 언패킹 (Unpacking)

언패킹은 패킹된 데이터를 여러 개의 변수로 분배하는 과정을 의미합니다.

# 튜플 패킹
packed_tuple = 1, 2, 3, 4

# 튜플 언패킹
a, b, c, d = packed_tuple
print(a)  # 출력: 1
print(b)  # 출력: 2

더 다양한 형태를 살펴보도록 하겠습니다.

a, b, c = range(3)
a
a, b, c, d, e = 'hello'
a
a, b = [10, 20]
a

이러한 언패킹은 아래와 같은 반복문에서도 사용될 수 있습니다.

for i, j in [[10, 20], [100, 200]]:
    print(i, j)
10 20
100 200

여기서 각각 10과 20이 언패킹되어 i와 j로 들어간 것을 확인할 수 있습니다.

2.2.1 별표(*)를 이용한 언패킹

별표(*)를 사용하면, 여러 개의 요소를 한번에 변수로 할당할 수 있습니다. 이는 특히 리스트나 튜플에서 일부만 변수로 할당하고 나머지를 다른 변수에 할당할 때 유용합니다.

first, *middle, last = [1, 2, 3, 4, 5]
print(first)    # 출력: 1
print(middle)   # 출력: [2, 3, 4]
print(last)     # 출력: 5