[파이썬] 색인 검색(Indexing)과 정렬(Sort)

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

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^