I. 색인 검색 (Indexing)
- 색인 연산은 대괄호(“[“, “]”) 기호 사용하며, 원소 검색 시 정수 사용
- 순방향 검색: 좌측부터 처리하며, 인덱스는 0부터 시작하는 양수 사용
- 역방향 검색: 우측부터 처리하며, 인덱스는 -1부터 시작하는 음수 사용
가. 색인(Index)으로 검색
[예제] 하나의 원소를 인덱스로 검색
a = [1, 2, 3, 4, 5] print(a[0]) print(a[4]) [결과] 1 5
- 인덱스 범위를 벗어나면 “IndexError: list index out of range” 에러 발생
나. getitem, setitem으로 검색
[예제] getitem, setitem으로 인덱스 검색
import operator as op a = [1,2,3,4,5] print("op.getitem(a,3):", op.getitem(a,3)) op.setitem(a,1,500) print(a) a.insert(4, 1000) print(a) print("역방향 색인연산: a[-3]:", a[-3]) [결과] op.getitem(a,3): 4 [1, 500, 3, 4, 5] [1, 500, 3, 4, 1000, 5] 역방향 색인연산: a[-3]: 4
II. 슬라이스 검색
- 시퀀스 객체 내 특정 범위를 부분으로 생성하는 것을 슬라이스라고 하며, 슬라이스 객체 생성하여 부분 조회 가능
[예제] 부분 집합 검색
a = [1,2,3,4,5] print("a[0:3]:", a[0:3]) # 리스트 분할 시 슬라이스 검색 a1 = a[:4] print("a1 is a:", a1 is a) # 기존 리스트와 슬라이스 리스트는 다른 객체임 a1[3] = 999 s = slice(None, 10) # 시작/종료점을 인자로하여 슬라이스 객체 생성 a2 = a1[s] print(a2) [결과] a[0:3]: [1, 2, 3] a1 is a: False [1, 2, 3, 999]
III. 정렬(Sorting)
- 시퀀스 클래스로 생성된 객체는 인덱스 순서로 값 저장
- 값 기준으로 조정 시 별도 함수 사용 필요
[예제] sort, reverse 정렬
s = sorted("문자열 정렬".split()) # 문자열 분리 시 split 함수 사용 print(s) a = [1,7,3,11,5,9] a.sort() print("sort 결과:", a) a.reverse() # a.sort(reverse=True)도 같은 결과 print("reverse 결과:", a) [결과] ['문자열', '정렬'] sort 결과: [1, 3, 5, 7, 9, 11] reverse 결과: [11, 9, 7, 5, 3, 1]
[참고]
잇플, “한 권으로 개발자가 원하던 파이썬 심화 A to Z”, 2019.11