Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 리스트가 정렬되어 있는지 확인하는 방법

리스트(List)는 Python에서 가장 널리 사용되는 데이터 컬렉션입니다. 실제 개발 과정에서 주어진 리스트가 이미 정렬되어 있는지 확인해야 하는 상황을 자주 마주하게 됩니다. 이 글에서는 Python으로 리스트의 정렬 여부를 확인할 수 있는 대표적인 두 가지 방법을 소개합니다.

방법 1: sort() 함수 활용

가장 직관적인 방법은 원본 리스트의 복사본을 만들어 정렬한 뒤, 원본과 비교하는 것입니다. 복사본에 sort() 함수를 적용하여 새로운 리스트로 저장하고, 이를 원본 리스트와 비교해 두 리스트가 동일한지 확인합니다.

예제 코드

listA = [11,23,42,51,67]
# 주어진 리스트
print("Given list : ",listA)
listA_copy = listA[:]
# 복사본에 sort 적용
listA_copy.sort()
if (listA == listA_copy):
    print("Yes, List is sorted.")
else:
    print("No, List is not sorted.")

# 다시 확인
listB = [11,23,21,51,67]
# 주어진 리스트
print("Given list : ",listB)
listB_copy = listB[:]
# 복사본에 sort 적용
listB_copy.sort()
if (listB == listB_copy):
    print("Yes, List is sorted.")
else:
    print("No, List is not sorted.")

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given list : [11, 23, 42, 51, 67]
Yes, List is sorted.
Given list : [11, 23, 21, 51, 67]
No, List is not sorted.

방법 2: all()과 range() 함수 활용

두 번째 방법은 all() 함수와 range() 함수를 함께 사용하는 것입니다. all() 함수를 통해 리스트의 모든 요소가 바로 다음 요소보다 작거나 같은지 검사하고, range() 함수로 리스트 전체를 순회하며 조건을 확인합니다. 이 방법은 불필요한 복사본 생성 없이 원본 리스트만으로 정렬 여부를 판단할 수 있어 효율적입니다.

예제 코드

listA = [11,23,42,51,67]
# 주어진 리스트
print("Given list : ",listA)
# all과 range 적용
if (all(listA[i] <= listA[i + 1] for i in range(len(listA)-1))):
    print("Yes, List is sorted.")
else:
    print("No, List is not sorted.")
# 다시 확인
listB = [11,23,21,51,67]
print("Given list : ",listB)
# all과 range 적용
if (all(listB[i] <= listB[i + 1] for i in range(len(listB)-1))):
    print("Yes, List is sorted.")
else:
    print("No, List is not sorted.")

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given list : [11, 23, 42, 51, 67]
Yes, List is sorted.
Given list : [11, 23, 21, 51, 67]
No, List is not sorted.

마무리

정리하면, sort()를 이용한 방법은 코드가 단순하고 이해하기 쉬운 반면 리스트 복사본을 만들어야 하므로 메모리가 추가로 필요합니다. 반면 all()range()를 조합한 방법은 제너레이터 표현식을 사용해 추가 메모리 없이 한 번의 순회로 정렬 여부를 판별할 수 있습니다. 리스트의 크기와 상황에 따라 적절한 방법을 선택하여 사용하시기 바랍니다.