파이썬의 자료형 중에는 시퀀스 자료형이라는 것이 있습니다.
여기서 시퀀스는 무엇을 의미할까요. 예를 들어보겠습니다. 일련의 에피소드들이 모여 하나의 영화가 만들어진다고 가정해보면, 각각의 에피소드들이 모인 영화의 요소들이 바로 시퀀스입니다. 예시처럼 각각의 요소들이 연속적으로 이어지는 것이 시퀀스고 이런 시퀀스형식의 자료형이 바로 시퀀스 자료형이 되는 것입니다.
정리하자면, 각각의 요소들이 연속적으로 이어진 자료형이 바로 시퀀스 자료형이 되겠죠. 시퀀스 자료형으로 만든 객체를 시퀀스 객체라고 하며 시퀀스 객체 안에 들어있는 값들을 요소라고 부릅니다.
- 시퀀스 자료형의 종류
시퀀스 자료형에는 리스트(list), 튜플(tuple), 레인지(range), 문자열(string)이 있습니다.
a = [1, 2, 3, 4, 5] # 리스트(list)
b = (1, 2, 3, 4, 5) # 튜플(tuple)
c = range(10) # 레인지(range)
d = 'Python' # 문자열(string)
- 시퀀스 자료형의 특성
1) 인덱싱 (indexing)
각 객체의 요소들은 정해진 순서가 있으며, 그 순서를 인덱스라고 부릅니다. 이 인덱스를 사용해 값에 접근할 수 있습니다.
a = [1, 2, 3, 4, 5]
# 인덱스 순서는 0부터 시작합니다. 즉 요소1의 인덱스는 0, 요소2의 인덱스는 1, 요소 3의 인덱스는 2입니다.
>>> a[0]
1
>>> a[1]
2
>>> a[4]
5
>>> a[-1]
5
>>> a[-2]
4
변수명[인덱스 순서] 형식으로 입력하면 인덱스 순서에 위치한 값을 알 수 있습니다. 인덱스에 마이너스를 넣으면 맨 뒤의 값부터 접근할 수 있습니다. ( a[-1] )
2) 슬라이싱 (slicing)
슬라이싱은 레몬을 얇게 써는 것(slice) 처럼 하나의 요소들을 잘라주는 것입니다. 변수명[시작인덱스:종료인덱스:증가폭]를 입력하면 변수의 시작인덱스에 위치해 있는 값부터 종료인덱스의 바로 전 값까지 출력됩니다.
>>> a = (1, 2, 3, 4, 5)
>>> a[1:4]
(2, 3, 4)
>>> b = (10, 20, 30, 40, 50)
>>> b[2:5:2]
(30, 50)
>>> a = [1, 2, 3, 4, 5]
>>> a[::2]
[1, 3, 5]
시작인덱스와 종료인덱스에 숫자를 넣지 않으면 시작인덱스는 처음(0 자리)부터 시작하고 종료인덱스는 맨 끝(-1)에 종료됩니다.
3) 연결
각각의 시퀀스 객체들은 더하기(+)를 이용해 연결할 수 있습니다.
>>> a = [1, 2, 3, 4, 5]
>>> b = [10, 20, 30, 40, 50]
>>> a + b
[1, 2, 3, 4, 5, 10, 20, 30, 40, 50]
이렇게 + 연산자로 시퀀스 객체를 연결하면 새 시퀀스 객체가 생성됩니다.
하지만 시퀀스 자료형인 range는 서로 연결할 수 없습니다.
>>> a = range(10)
>>> b = range(5)
>>> a + b
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
a + b
TypeError: unsupported operand type(s) for +: 'range' and 'range'
range와 range를 연결하면 위처럼 오류가 뜹니다.
>>> a = list(range(10))
>>> b = list(range(5))
>>> a + b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4]
>>> a = tuple(range(10))
>>> b = tuple(range(5))
>>> a + b
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4)
range끼리는 연결할 수 없기 때문에 list나 튜플 형식으로 바꿔주면 연결할 수 있습니다.
4) 반복
>>> a = [1, 2, 3, 4, 5]
>>> a * 2
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
* 연산자를 사용해 시퀀스 객체를 원하는 숫자만큼 반복할 수 있습니다.
>>> range(10) * 2
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
range(10) * 2
TypeError: unsupported operand type(s) for *: 'range' and 'int'
하지만 range는 *를 이용해 반복할 수 없으므로 list나 tuple형식으로 바꿔서 반복해주면 됩니다.
>>> list(range(10)) * 2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
5) 크기
len(변수명)을 사용하면 객체 안에 있는 값의 크기를 알 수 있습니다.
>>> a = [1, 2, 3, 4, 5]
>>> len(a)
5
'Python' 카테고리의 다른 글
[Python] 2차원 리스트 (0) | 2021.03.29 |
---|---|
[Python] 리스트 표현식 (list comprehension) (0) | 2021.03.28 |
[Python] 리스트 조작 (0) | 2021.03.28 |
[Python] input() (0) | 2021.03.14 |
[Python] 변수 (0) | 2021.03.11 |