파이썬 리스트 - insert, sort, bisect 비교

소환인·2023년 10월 16일
0

스터디노트

목록 보기
3/48

파이썬에서 리스트에 요소를 추가하고 정렬하는 방법은 다양합니다. 이 포스트에서는 insert, append &sort, 그리고 bisect 세 가지 방법을 살펴보겠습니다.


1. insert() 메서드

insert()는 리스트에 요소를 특정 인덱스에 삽입하는 메서드입니다. 이미 정렬된 리스트에 새로운 요소를 추가할 때 유용합니다. 하지만 먼저 어느 자리에 자료를 삽입해야 하는지를 찾는 작업이 필요합니다. insert() 메서드는 리스트에 항목을 지정된 인덱스 위치에 추가합니다. 이 메서드는 두 개의 인자, 즉 인덱스와 값을 받아 해당 인덱스에 값을 추가합니다.

예제:

numbers = [1, 3, 5, 7]
numbers.insert(2, 4)  # index 2에 값 4 삽입
print(numbers)  # 출력: [1, 3, 4, 5, 7]

적절한 인덱스 찾기

값을 삽입하기 전에 적절한 인덱스 위치를 찾아야 합니다. 이를 위해 리스트를 순회하며 삽입할 값과 각 요소를 비교합니다.

예제 코드:

numbers = [1, 3, 5, 7]
value_to_insert = 4

index_to_insert = 0
for i, num in enumerate(numbers):
    if num < value_to_insert:
        index_to_insert = i + 1

insert() 메서드로 값 삽입하기

적절한 인덱스를 찾았다면, insert() 메서드를 사용해 그 위치에 값을 삽입합니다.

예제 코드:

numbers.insert(index_to_insert, value_to_insert)
print(numbers)  # 출력: [1, 3, 4, 5, 7]

insert() 메서드와 적절한 인덱스 찾기를 조합하면, 리스트에 값을 효율적으로 삽입하고 정렬 상태를 유지할 수 있습니다.


2. append()sort()

append()를 이용해 리스트에 자료를 추가할 수 있습니다. 자료 추가 후 sort()를 활용해 리스트를 정렬할 수 있습니다. 데이터가 충분히 큰 경우, insert()를 통한 작업보다 시간효율성이 떨어질 수 있습니다.

예제:

numbers = [5, 1, 9, 3, 7]
numbers.append(4) # [5, 1, 9, 3, 7, 4]
numbers.sort()
print(numbers)  # 출력: [1, 3, 4, 5, 7, 9]

3. bisect.insort() 함수

bisect.insort()는 정렬된 순서를 유지하면서 리스트에 값을 삽입하는 함수입니다. 이 함수는 이진 검색 알고리즘을 사용하여 삽입할 위치를 빠르게 찾아낸 다음, 그 위치에 값을 삽입합니다.

예제:

import bisect

numbers = [1, 3, 5, 7]
bisect.insort(numbers, 4)
print(numbers)  # 출력: [1, 3, 4, 5, 7]

비교

bisect.insort()insert() 후 정렬하거나 append() 후 정렬하는 방법에 비해 특정 시나리오에서 더 빠르게 동작합니다. 이미 정렬된 리스트에 값을 추가하고 그 상태를 유지해야 할 때 이 방법이 효율적입니다.

profile
돌고돌아

0개의 댓글