일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- SQL
- hive
- PySpark
- dataframe
- google apps script
- Google Spreadsheet
- Google Excel
- django
- Apache
- Excel
- list
- Tkinter
- Github
- string
- gas
- Kotlin
- 파이썬
- GIT
- c#
- numpy
- Java
- PANDAS
- Python
- Mac
- math
- matplotlib
- array
- Redshift
- PostgreSQL
- Today
- Total
달나라 노트
Python Basic : sorted, sort (list의 요소 정렬하기) 본문
sorted, sort 모두 python의 list 속 요소들을 정렬할 수 있습니다.
list_test = [5, 3, 1, 4, 2]
list_test.sort(reverse=False)
print(list_test)
list_test = [5, 3, 1, 4, 2]
list_test.sort(reverse=True)
print(list_test)
-- Result
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]
먼저 sort method를 봅시다.
위처럼 어떤 list에 적용하여 sort가 적용된 list 자체를 정렬시켜버립니다.
(sort method는 적용된 list 자체에 변형을 가하고 아무 return값이 없습니다.)
또한 reverse라는 option을 명시하여 오름차순/내림차순 정렬을 설정할 수 있습니다. (기본값은 False입니다.)
reverse=False --> 오름차순 정렬
reverse=True --> 내림차순 정렬
근데 보통 sort보단 sorted method가 더 편합니다.
list_test = [5, 3, 1, 4, 2]
list_new = sorted(list_test, reverse=False)
print(list_test)
print(list_new)
list_test = [5, 3, 1, 4, 2]
list_new = sorted(list_test, reverse=True)
print(list_test)
print(list_new)
-- Result
[5, 3, 1, 4, 2]
[1, 2, 3, 4, 5]
[5, 3, 1, 4, 2]
[5, 4, 3, 2, 1]
이번엔 sorted method입니다.
sorted method는 인자로서 정렬을 적용할 list를 받습니다.
마찬가지로 아래처럼 오름차순/내림차순을 reverse key를 이용해 설정할 수 있습니다. (기본값은 False입니다.)
reverse=False --> 오름차순 정렬
reverse=True --> 내림차순 정렬
또한 sorted method는 원본 list는 건드리지 않고 정렬된 list를 return합니다.
list_test가 원본 그대로인걸 알 수 있죠.
list_test = ['a', 'd', 'D', 'c', 'A', 'B']
list_new = sorted(list_test, reverse=False)
print(list_new)
list_new = sorted(list_test, reverse=False, key=str.lower)
print(list_new)
-- Result
['A', 'B', 'D', 'a', 'c', 'd']
['a', 'A', 'B', 'c', 'd', 'D']
정렬을 할 때 오름차순으로 정렬한다고 가정하면 기본적으로 대문자가 소문자보다 더 앞쪽에 위치하게 됩니다.
그러나 sorted method에선 key라는 argument에 정렬 전 list 속 각각의 element에 적용할 함수를 명시할 수 있습니다.
위 예시에선 key=str.lower로서 각각의 요소를 모두 소문자로 만든 후 정렬을 하라는 뜻이 됩니다.
list_test = [
('a', 'z', 3),
('c', 'x', 2),
('b', 'y', 1),
]
list_new = sorted(list_test) # 1
print(list_new)
list_new = sorted(list_test, key=lambda x: x[0]) # 2
print(list_new)
list_new = sorted(list_test, key=lambda x: x[1]) # 3
print(list_new)
list_new = sorted(list_test, key=lambda x: x[2]) # 4
print(list_new)
-- Result
[('a', 'z', 3), ('b', 'y', 1), ('c', 'x', 2)]
[('a', 'z', 3), ('b', 'y', 1), ('c', 'x', 2)]
[('c', 'x', 2), ('b', 'y', 1), ('a', 'z', 3)]
[('b', 'y', 1), ('c', 'x', 2), ('a', 'z', 3)]
위 예시는 sorted method를 이용해 좀 더 복잡한 정렬을 한 내용입니다.
list_test는 list속 tuple을 담고있는 형식입니다.
1. 이러한 list에 sorted를 적용하면 기본적으로 list속 tuple들의 가장 첫 번째 요소를 기준으로 정렬합니다.
즉, a, b, c를 기준으로 오름차순 정렬됨을 볼 수 있죠.
2. key에다가 lambda식을 명기한 후 여기에 x[0]이라고 적어줬습니다.
여기서 x는 list_test의 각 요소를 의미합니다. ('a', 'z', 3) 이런것들이 하나의 요소가 되는거죠.
따라서 x[0]는 각 요소의 index=0 값 기준으로 정렬을 하라는 뜻입니다.
즉, list속 tuple의 첫 번째 요소값을 기준으로 정렬하라는 뜻이죠.
3. x[1]이라고 명시한 것은 list속 tuple의 index=1인 요소값을 기준으로 정렬하라는 뜻입니다.
3. x[2]라고 명시한 것은 list속 tuple의 index=2인 요소값을 기준으로 정렬하라는 뜻입니다.
'Python > Python Basic' 카테고리의 다른 글
Python Basic : pow (거듭제곱, power) (0) | 2021.03.30 |
---|---|
Python Basic : list clear, remove, pop, del (list속 요소 삭제하기) (0) | 2021.03.29 |
Python Basic : lower, upper (소문자로 변경하기, 대문자로 변경하기) (0) | 2021.03.27 |
Python Basic : isnumeric (숫자로 변환될 수 있는 data인지 체크하기) (0) | 2021.03.18 |
Python Basic : open (file 읽기) (0) | 2021.02.08 |