파이썬 정렬
정렬 메소드인 sort()와 함수 sorted()는 디폴트 값이 오름차순이고, 내림차순으로 정렬을 하기 위해서 reverse 인자를 추가한다.
arr = [10, 3, 4, 2, 100]
arr.sort(reverse = True)
print(arr)
# [100, 10, 4, 3, 2]
arr = [10, 3, 4, 2, 100]
arr.sorted(arr, reversed = True)
print(arr)
# [100, 10, 4, 3, 2]
* reversed 인자 이외에도 [::-1]을 이용하여 정렬할 수 있다.
lambda(익명함수)
어떤 리스트를 정렬하기 위해서는 다양한 기준을 활용할 수 있는데, reversed 인자처럼 key 인자를 활용하면 된다.
여기서 lambda(익명 함수)가 key에 들어갈 값이다.
arr = [리스트 원소들...]
arr.sort(key = lambda 변수 : 정렬 조건)
arr = sorted(key = lambda 변수 : 정렬 조건)
변수는 우리가 흔히 변수명을 지정하듯이 값에 맞는 키워드를 넣어서 지정하면된다. 보통 x, a 등을 사용한다.
lambda 예시
이제 lambda(익명함수)를 활용하여 문자열을 정렬해보자. 문자열의 오름차순 정렬은 사전순(a,b,c...) 정렬과 같다.
arr = ['a', 'opqrs', 'b','xyz']
arr = sorted(arr, key = lambda x: x)
print(arr)
# ['a', 'b', 'opqrs', 'xyz']
문자열 길이를 기준으로 정렬할 수도 있다. lambda 함수의 정렬 조건에 문자열 길이를 설정해보자.
arr = ['a', 'opqrs', 'b','xyz']
arr = sorted(arr, key = lambda x: len(x))
print(arr)
# ['a', 'b', 'xyz', 'opqrs']
기준이 여러 개일 때의 lambda
정렬 기준은 다양한 기준이, 또 여러개의 기준이 올 수 있다.
이때 기준을 작성한 순서대로 중요도를 나눈다. lambda 변수: [1순위 조건, 2순위 조건,...]이다.
arr = ['a', 'opqrs', 'b','xyz']
arr = sorted(arr, key = lambda s:[len(s),ord(s[0])])
print(arr)
# ['a', 'b', 'xyz', 'opqrs']
- 문자열 길이(작은값 순서)
- 아스키코드 값으로 정렬하면 결과는 위와 같다.
- 분명 opqrs의 s[0]이 아스키 코드값이 더 작지만, 기준의 1순위가 문자열 길이이기 때문에, 위와 같은 결과를 출력한다.
- 여러개의 기준을 사용할 때에는 [조건1, 조건2,...] 형태로 사용해야 한다는 점, lambda 변수로 정한 변수명을 사용해야 한다는 점을 주의해야 한다.
'언어 > PYTHON' 카테고리의 다른 글
[python] 파이썬으로 진법변환하기 (0) | 2024.08.08 |
---|---|
[Python] 파이썬 딕셔너리 (0) | 2023.02.13 |
[python] 파이썬 정렬 함수 sort와 sorted의 차이 (0) | 2023.01.09 |
[python] 파이썬 출력 tip! (0) | 2023.01.09 |
[python] 리스트에 대해서 알아보자. (0) | 2022.08.13 |