참고 자료
https://docs.python.org/3/library/stdtypes.html
파이썬 버전 3.7 기준
파이썬 자료형 및 연산자(3)
시퀀스형
시퀀스형의 자료형은 무언가의 조합으로 이루어진 자료형이라고 생각하면 편하다.
시퀀스형에는 3가지의 기본 시퀀스형(리스트, 튜플, 레인지)이 있다.
바이너리 데이터 및 텍스트 문자열 처리를 위한 시퀀스형들 역시 존재한다.
리스트(list)
○ 리스트는 가변 시퀀스형이다.
○ 일반적으로 유사한 항목의 모음을 저장하는데 사용된다.(유사도는 프로그램마다 다름)
○ 리스트의 생성은 다양한 방법을 통해 가능하다.
▷ 대괄호를 통해 빈 리스트 생성: []
▷ 대괄호 안에 값을 입력하여 생성(쉼표 이용 여러 값 입력가능): ['a'], ['a', 'b', 'c']
▷ 리스트 컴프리헨션 이용: [x for x in range(0,20)]
▷ 형 생성자 이용: list(), list((1,2,3, ... ))
○ list.sort(*, key=None, reverse=False)
▷ < 비교만 사용하여 리스트를 제자리에서 정렬한다.
▷ 비교연산이 실패할 경우 전체 정렬연산이 실패한다. (부분적으로 수정된 상태로 남음)
▷ 큰 시퀀스를 정렬할때 메모리를 절약하기 위해 제자리에서 수정한다.
▷ 안정적이기 때문에 여러 번 정렬하는 것이 가능하다.
▷ reverse를 True로 할 경우 값이 큰 순으로 정렬한다.
튜플(tuple)
○ 튜플은 불변 시퀀스형이다.
○ 보통 서로다른 데이터를 저장할때 사용한다.(예: enumerate()함수로 생성된 2-튜플)
○ 같은 형태의 데이터의 불변 시퀀스가 필요할 경우 종종 사용한다.
(예: set이나 dict인스턴스에 저장하고자 하는 경우)
○ 튜플 생성은 다양한 방법을 통해 가능하다.
▷ 소괄호를 통해 빈 리스트 생성: ()
▷ 단일 항목 튜플을 위해 마지막에 쉼표 붙이기: a, 또는 (a,)
▷ 항목을 쉼표로 구분: a, b, c 또는 ''(a, b, c)''
▷ 형 생성자 이용: tuple() 또는 tuple((1,2,3, ... ))
※ 실제로 튜플을 만드는건 괄호가 아니라 쉼표라는 사실을 명심하도록 한다.
괄호는 문법상 모호함을 피하기 위함이다.
레인지(range)
○ 숫자의 불변시퀀스를 나타낸다.
○ for루프에서 특정 횟수만큼 반복하는데 자주 사용한다.
○ range를 생성할 때의 형태이다.
▷ range(stop): 0부터 stop 전 까지 생성한다.
▷ range(start, stop): start부터 stop 전 까지 1씩 증가시켜가며 생성한다.
▷ range(start, stop, step): start부터 stop 전 까지 step 만큼 증가시켜가며 생성한다.
(start의 기본값은 0이며, step의 기본값은 1이다.)
○ 표현범위크기와 무관하게 리스트나 튜플보다 메모리 사용이 적다.
(start, stop, step만 저장한다.)
○ ==나 !=로 검사할 경우 시퀀스처럼 비교하게 됨. 즉, 범위가 나타내는 값이 같으면 같다고 취급한다.
(예: range(0, 5, 2) == range(0, 6, 2)는 True를 출력한다.)
공통 시퀀스 연산
연산자 |
사용 예 |
의미 |
비고 |
in |
x in s |
시퀀스 s의 항목중 하나가 x와 같으면 True 아니면 False을 출력한다. |
※ |
not in |
x not in s |
시퀀스 s의 항목중 하나가 x와 같으면 False 아니면 True를 출력한다. |
※ |
+ |
s + t |
시퀀스 s에 시퀀스 t를 이어붙인다. |
|
* |
s * n n * s |
시퀀스 s를 n-1번 이어붙인다. (총 n개의 s가 형성된다.) |
※ |
s[i] |
s[i] |
시퀀스 s의 i번째 요소(0부터 시작)을 출력한다. |
※ |
s[i:j] |
s[i:j] |
시퀀스 s의 i번째 요소부터 j-1번째 요소까지 출력한다. (i부터 j까지의 슬라이스) |
※ |
s[i:j:k] |
s[i:j:k] |
시퀀스 s의 i번째 요소부터 j-1번째 요소까지 k스탭으로 출력한다. |
※ |
len() |
len(s) |
시퀀스 s의 길이를 출력한다. |
|
min() |
min(s) |
시퀀스 s 요소 중 가장 작은 값을 출력한다. |
|
max() | max(s) | 시퀀스 s 요소 중 가장 큰 값을 출력한다. | |
index() | s.index(x,[i [, j]]) | 시퀀스 s에서 첫번째로 등장하는 x의 인덱스를 출력한다. (i, j는 요소 인덱스의 범위를 나타냄) | ※ |
count() | s.count(x) | 시퀀스 s에서 x가 등장하는 총 수를 출력한다. |
※ s.index(x)에서 x가 없을 경우 에러가 발생하다.
※※※※
가변 시퀀스 연산 (리스트)
연산자 | 사용 예 | 의미 | 비고 |
= | s[i] = x | s의 i번째 요소를 x로 대체한다. | ※ |
del | del s[i:j] del s[i:j:k] | s의 i번째요소부터 j-1번째까지의 요소를 삭제한다. s[i:j:k]의 항목을 제거한다. | |
append() | s.append(x) | s에 가장 끝에 x를 추가한다. s[len(s):len(s)] = [x]도 같은 결과를 나타낸다. | |
clear() | s.clear() | s에서 모든 항목을 제거한다. del s[:]도 같은 결과를 나타낸다. | ※ |
extend() | s.extend(t) 또는 s += t | t의 내용으로 s를 확장한다. s[len(s):] = t 도 같은 결과를 나타낸다. | |
*= | s *= n | 내용이 n번 반복되도록 s를 갱신한다. | ※ |
insert() | s.insert(i, x) | x를 s의 i로 주어진 인덱스에 삽입한다. | |
copy() | s.copy() | s의 앝은 복사를 나타낸다. | ※ |
pop() | s.pop([i]) | s에서 i에 있는 항목을 꺼네고 그 항목을 제거한다. | ※ |
remove() | s.remove(x) | s에서 첫번째로 등장하는 x를 제거한다. | ※ |
reverse() | s.reverse() | 제자리에서 s의 요소의 순서를 뒤집는다. | ※ |
※ s[i:j:k]에서 t는 교체할 슬라이스와의 길이가 같아야 한다.
※ pop([i])의 경우 i의 기본값이 -1이므로 가장 끝의 요소를 꺼내고 삭제하고 싶을 경우 i입력을 생략 가능하다.
※ remove(x)의 경우 x가 존재하지 않는 경우 에러를 발생시킨다.
※ reverse()의 경우 제자리에서 순서를 뒤집으므로 메모리가 적게들지만 이전 순서데이터는 보존하지 못한다.
※ s *= n에서 n이 음수거나 0이면 시퀀스를 지우며 n값은 정수여야 한다.
※ copy()와 clear()는 슬라이싱 연산을 지원하지 않는 경우에도 사용이 가능하다.
(즉, dict, set에서도 사용가능하다.)
※※※※
'Python > 파이썬 기초' 카테고리의 다른 글
집합형(set, frozenset)과 관련 함수/메서드 - 파이썬 기초(6) (0) | 2018.11.18 |
---|---|
문자열형(string)과 관련 함수/메서드 - 파이썬 기초(5) (0) | 2018.11.12 |
숫자형(정수형,실수형,복소수형)과 산술 연산자/메서드 - 파이썬 기초(3) (0) | 2018.11.10 |
논리형(boolean), 논리 연산자, 비교 연산자 - 파이썬 기초(2) (0) | 2018.11.08 |
파이썬의 개요, 특징, 활용 가능성 - 파이썬 기초(1) (0) | 2018.11.04 |
댓글