[Python] 시퀀스 자료 활용하기
- Language/Python
- 2020. 10. 13.
리스트, 튜플 , range, 문자열들은 모두 값이 연속적으로 이어져 있다.
파이썬에서는 이처럼 값이 연속적으로 이어진 자료형을 시퀀스 자료형이라고 부른다.
시퀀스 자료형의 가장 큰 특징은 공통 동작과 기능을 제공 한다.
특정 값이 있는지 확인 in
a = [0, 10, 20, 30]
30 in a
>>>True
값이 있을 경우 True, 없을 경우 False가 발생한다.
반대로 not을 넣을 경우 결과값은 반대로 된다.
위와 같이 실행 햇을때
a = [0, 10, 20, 30]
30 not in a
>>>False
not은 결과값을 뒤집는다.
시퀀스 연결기 +
a = [0, 10, 20, 30]
b = [9, 8, 7]
a + b
>>>[0, 10, 20, 30, 9, 8, 7]
시퀀스는 + 를 통해 서로 연결 할 수가 있다.
단, 시퀀스 자료형 중에서 range는 +를 통해 연결 할 수가 없다.
list(range(0, 10))+list(range(10, 20))
그래서 range는 list나 혹은 tuple을 사용해서 연결을 해야 한다.
시퀀스 객체 반복하기 *
시퀀스 객체를 * 한 수 만큼 반복하게 만들 수 있다.
[10, 20] *3
>>>[10, 20, 10, 20, 10,2 0]
해당 시퀀스의 결과를 3번 반복하게 만들었다.
여기서도 range는 *를 사용 할 수가 없다.
그러므로 list나 tuple을 사용해서 이용해야 한다.
list(range(0, 5, 2)) *3
[0, 2, 4, 0, 2, 4, 0, 2, 4]
시퀀스의 객체 요소 개수 구하기 len(시퀀스 객체)
시퀀스 객체는 여러개가 들어 있다. 그 길이를 구할 때는 len()을 사용한다.
a = [10, 20, 30]
len(a)
>>>3
a의 시퀀스에는 값이 3개 들어 있으므로 결과값은 3이 나온다.
이의 활용법은 또 있다.
len(range(0, 10, 2))
>>>5
range를 사용할 경우 위에 해당하는 결과값의 갯수는 5개다. 따라서 결과도 5가 나온다.
인덱스 사용하기 시퀀스이름[인덱스]
시퀀스의 객체는 순서가 정해져 있으며, 이를 인덱스라고 한다.
시퀀스이름[인덱스] 가 그 방법이다.
a = [0, 10, 20, 30]
a[0]
>>> 0
0은 제일 처음의 인덱스이며 a 시퀀스의 제일 처음은 0이다. 따라서 0이 출력 된다.
a의 요소는 4개지만, 0부터 시작하므로 0부터 3까지만 사용 할 수 있다.
인덱스 음수
a = [0, 10, 20]
a[-1]
>>> 20
그러나 파이썬은 음수 인덱스도 존재한다.
위의 예시는 4개이므로 -1 부터 -4 까지가 존재한다.
이제 위에서 배운 것과 잘 활용을 하게 된다면
a[len(a)-1]
a[len(a)*-1]
양수 일 경우 -1을 음수일 경우에는 *-1을 붙이면 양수와 음수의 인덱스 끝 지점에 도달 할 수가 있다.
여기서 조심해야 할 점은 인덱스가 정해진 값보다 높으면 오버플로우, 낮으면 언더플로우가 발생한다.
요소에 값 할당하기
a = [0, 0, 0]
a[0] = 10
a[1] = 40
a[2] = 50
지정 한 인덱스에 값을 넣을 경우에 얼마든지 값을 변경 할 수가 있다.
단, 인덱스의 특징은 오버플로우, 언더플로우가 존재하므로 정해진 갯수 이상에는 지정 할 수가 없다.
마찬가지로 tuple, range, 문자열도 변경 할 수가 없다.
이는 이들의 특징상 변경 할 수가 없으므로 반드시 캐스팅 후 이용해야 한다.
요소를 삭제하기 del()
a = [10, 20, 30]
del a[1]
>>> [10, 30]
del을 사용 할 경우 시퀀스의 요소를 삭제 할 수가 있다.
그러나 tuple, range, 문자열은 삭제 할 수가 없으므로 주의 해야 한다.
슬라이스 사용하기
시퀀스 자료형은 슬라이스라는 기능을 자주 사용한다.
슬라이스는 우리의 일상 처럼 자른다는 의미를 보인다.
'Language > Python' 카테고리의 다른 글
[Python] if 사용하기 (0) | 2020.10.13 |
---|---|
[Python] 딕셔너리 사용하기 (0) | 2020.10.13 |
[Python] 11장 시퀀스 (0) | 2020.10.12 |
[Python] 10장 배열 (0) | 2020.10.12 |
[Python] 9장 Blooean (0) | 2020.10.12 |