Hey Tech

[파이썬] 리스트 관련 함수: append, sort, reverse, insert, count, remove 본문

SW 개발/Python

[파이썬] 리스트 관련 함수: append, sort, reverse, insert, count, remove

Tony Park (토니) 2021. 4. 16. 10:16
728x90
반응형

 

 

안녕하세요, 오늘은 리스트(list) 데이터 타입에 유용한 함수로서 append(), sort(), reverse(), insert(), count(), remove()에 대해 소개해 드립니다.

내용이 간단하니 아래 표와 예시를 참고해 주세요!

사용목적 및 설명 메서드 시간 복잡도
데이터 추가(맨 뒤에서부터 추가) 리스트 이름.append(추가할 데이터) \(O(1)\)
데이터 정렬(오름차순 정렬) 리스트 이름.sort() \(O(NlogN)\)
데이터 정렬(내림차순 정렬) 리스트 이름.sort(reverse = True) \(O(NlogN)\)
리스트 내 원소 순서 뒤집기 리스트 이름.reverse() \(O(N)\)
특정 인덱스에 원소 삽입 리스트 이름.insert(삽입할 위치의 인덱스, 삽입할 값) \(O(N)\)
특정 원소(값)의 개수 세기 리스트 이름.count(특정 원소) \(O(N)\)
특정 원소(값)를 1개만 제거 리스트 이름.remove(제거할 원소(값)) \(O(N)\)

예시

arr = [5, 1, 4, 2]

# 데이터 추가
arr.append(3)
print(arr) # [5, 1, 4, 2, 3]

# 오름차순 정렬
arr.sort()
print("오름차순 정렬: ", arr) # 오름차순 정렬:  [1, 2, 3, 4, 5]

# 내림차순 정렬
arr.sort(reverse = True)
print("내림차순 정렬: ", arr) # 내림차순 정렬:  [5, 4, 3, 2, 1]

# 원소 순서 뒤집기
arr.reverse()
print("원소 순서 뒤집기: ", arr) # 원소 순서 뒤집기:  [1, 2, 3, 4, 5]

# 특정 인덱스에 데이터 삽입
arr.insert(2, 5)
print("데이터 삽입 확인: ", arr) # 데이터 삽입 확인: [1, 2, 5, 3, 4, 5]
arr.insert(5, 5)
print("데이터 삽입 확인: ", arr) # 데이터 삽입 확인:  [1, 2, 5, 3, 4, 5, 5]
arr.insert(1, 5)
print("데이터 삽입 확인: ", arr) # 데이터 삽입 확인:  [1, 5, 2, 5, 3, 4, 5, 5]

# 리스트 내 '5' 원소의 개수 확인
print("리스트 내 '5' 원소의 개수: ", arr.count(5)) # 리스트 내 '5' 원소의 개수:  4

# 리스트 내 '5' 원소 제거
arr.remove(5)
print("원소 '5' 제거 후: ", arr) # 원소 '5' 제거 후:  [1, 2, 5, 3, 4, 5, 5]
# 리스트 내 '5' 원소의 개수 확인
print("리스트 내 '5' 원소의 개수: ", arr.count(5)) # 리스트 내 '5' 원소의 개수:  3 

데이터 삽입 시 시간 복잡도(append(), insert())

데이터 삽입 함수는 append()와 insert()가 있습니다. append() 함수는 리스트 맨 마지막 인덱스에 데이터를 삽입하면 되기 때문에 시간 복잡도가 \(O(1)\) 인 것과 달리, insert() 함수는 리스트 내 삽입될 원소의 위치를 정해줘야 하기 때문에 시간 복잡도가 \(O(N)\) 입니다. 따라서 코딩 대회(테스트) 등과 같이 시간 복잡도를 고려하여 문제를 풀어야 하는 경우에는 insert() 함수를 주의하여 사용할 필요가 있습니다.

데이터 삭제 시간 복잡도(remove())

데이터 삭제 함수는 remove()가 있습니다. 이 함수 역시 insert() 함수와 마찬가지로 리스트 내 특정 원소를 삭제한 후 리스트 내 원소들의 인덱스를 재조정해야 하기 때문에 시간 복잡도가 \(O(N)\) 입니다.


포스팅 내용에 오류가 있을 경우 댓글 남겨주시면 감사드리겠습니다.

그럼 오늘도 건강한 하루 보내시길 바랍니다 :)

고맙습니다.

728x90
반응형