728x90
Python의 .sort()는 리스트의 내용을 직접 정렬해주는 리스트 전용 메서드
기본 동작과 특징
- 형태: 리스트.sort() 형태로 사용.
- 원본 수정: 새로운 리스트를 반환하지 않고, 정렬 결과가 리스트 내부에 바로 반영됨(파괴적 메서드).
- 오름차순 정렬: 기본적으로 값을 작은 것부터 큰 것 순서(오름차순)로 정렬함.
- None 반환: 함수 실행 후 반환값이 없으므로 별도의 변수에 대입하지 않습니다. 예) lst.sort() → 반환값이 None임.
주요 옵션
- reverse: 내림차순으로 정렬하려면 list.sort(reverse=True)를 사용함.
- key: 정렬 기준을 직접 정할 수 있는 함수(예: lambda나 사용자 함수)를 인자로 넣음. 예시로, 문자열 길이대로 정렬할 경우 list.sort(key=len)을 사용함.
- 중첩/2차 기준: lambda와 튜플, 리스트를 활용해 여러 기준으로 동시에 정렬할 수 있음. 예: list.sort(key=lambda x: (x, x)).
예시 코드
numbers = [4, 2, 1, 5]
numbers.sort()
# 결과: [1, 2, 4, 5]
words = ['kiwi', 'apple', 'banana']
words.sort(key=len)
# 결과: ['kiwi', 'apple', 'banana'] (길이 기준 정렬)
words.sort(reverse=True)
# 결과: ['kiwi', 'banana', 'apple'] (내림차순)
- 리스트뿐만 아니라 다른 데이터 타입(튜플, 딕셔너리 등)에는 사용할 수 없음.
- 원본 리스트가 변하기 때문에 이전 순서를 복원하려면 미리 복사본을 만들어야 함.
핵심: .sort()는 리스트를 직접, 원하는 기준으로 정렬해주는 함수로, 반환값 없이 리스트의 상태만 바뀜.
sort()와 sorted() 차이점
sort()는 리스트만 사용, 내부 값 바로 정렬, 반환값 없음.
sorted()는 모든 반복 객체 사용 가능, 원본은 유지, 정렬된 새 리스트 반환.
# sort()
a = [3, 1, 4, 2]
a.sort()
print(a) # [1, 2, 3, 4]
# sorted()
b = [3, 1, 4, 2]
c = sorted(b)
print(b) # [3, 1, 4, 2] (변하지 않음)
print(c) # [1, 2, 3, 4] (새 리스트 반환)
sorted()를 활용한 풀이 분석
def solution(my_string):
return sorted(my_string[~i:] for i in range(len(my_string)))
- my_string이 apple이라는 가정한다면
- my_string[~i: ]의 의미
- 슬라이스에서 ~i는 비트 NOT연산자로 i = -i -1가 됨
- 예를 들어, i = 0이면 -0 -1 = -1, i = 1이면 -1-1 = -2이므로, 이 슬라이스는 끝에서부터 잘라내는 접미사로 활용됨.
- 슬라이스에서 ~i는 비트 NOT연산자로 i = -i -1가 됨
- for i in range(len(my_string))
- 문자열 길이만큼 반복하면서 각 위치에서 시작하는 접미사를 만듦
- 예를 들어 'apple'이면, 다음 접미사를 만든다면
- i=0 -> my_string[-0:] -> my_string[-1:] -> 'e'
- i=1 -> my_string[~1:] -> my_string[-2] -> 'le'
- 이렇게 숫자가 i=4까지 가면서 뒤에서부터 생성 됨
- sorted()
- 위에서 만든 접미사들을 알파벳순으로 정렬해서 반환함
- 예를 들어, 'apple'의 접미사는 ['e', 'le','ple','pple','apple'], 정렬하면 ['apple', 'e', 'le', 'ple', 'pple'].
728x90
'Python' 카테고리의 다른 글
Python/endswith()/startswith() (2) | 2025.09.04 |
---|---|
Python/ join/ zip (1) | 2025.08.28 |
Python/ 슬라이싱 규칙 (0) | 2025.08.28 |
pycharm/ Django/ git bash/ aws에 EC2로 서비스/ github로 코드 수동 배포 (0) | 2025.04.09 |
코딩테스트 - python 모음 (0) | 2024.11.27 |