39 — 정렬 — 목록 순서 정하기
불러온 목록은 적은 순서 그대로 오는데, 그 순서가 보여 주고 싶은 순서인
경우는 드뭅니다. Python의 sort 메서드는 목록 자체를 순서대로 바꾸고,
sorted()는 정렬된 사본을 만듭니다. 이 가이드는 JSON에서 숫자를 불러와
두 방식으로 정렬하고 그 차이를 설명합니다.
단계
JSON 목록 하나로
numbers.json을 만듭니다:
실행해 보기 →[5, 2, 9, 1, 7, 3]30 가이드가 같은 파일을 썼습니다. 여기서 숫자는 일부러 순서를 섞어 두었습니다.
14 가이드의
json읽기로 목록을 불러옵니다:
실행해 보기 →파일 사용 최신 숫자들 = json읽기("numbers.json") 말해 f"숫자 {len(숫자들)}개를 불러왔습니다: {숫자들}"실행하면
숫자 6개를 불러왔습니다: [5, 2, 9, 1, 7, 3]이 출력됩니다.sorted(숫자들)은 오름차순의 새 리스트를 돌려주고 원본은 건드리지 않습니다:
실행해 보기 →숫자들 = [5, 2, 9, 1, 7, 3] 오름차순 = sorted(숫자들) 말해 오름차순 말해 숫자들[1, 2, 3, 5, 7, 9]다음에[5, 2, 9, 1, 7, 3]이 출력됩니다 — 원본은 그대로입니다.숫자들.sort()는 리스트 자체를 바꿉니다. 호출 뒤에는 변수가 정렬된 목록을 담고 예전 순서는 사라집니다:
실행해 보기 →숫자들 = [5, 2, 9, 1, 7, 3] 숫자들.sort() 말해 숫자들[1, 2, 3, 5, 7, 9]가 출력됩니다. 이것이 "오름차순"입니다 — 작은 수가 먼저, 큰 수가 마지막입니다.내림차순은 뒤집어서 큰 수부터 나오게 합니다.
sorted(숫자들, reverse=True)가숫자들을 건드리지 않고 새 리스트를 만듭니다:
실행해 보기 →숫자들 = [1, 2, 3, 5, 7, 9] 내림차순 = sorted(숫자들, reverse=True) 말해 내림차순[9, 7, 5, 3, 2, 1]이 출력됩니다.이제 보고서 전체를 한 파일에 담습니다.
sorting.ko.nme로 저장합니다:
실행해 보기 →# 정렬: 저장된 숫자 목록을 순서대로 정리하기 # 실행: nme 실행 sorting.ko # numbers.json 파일이 같은 폴더에 있어야 합니다. 파일 사용 최신 숫자들 = json읽기("numbers.json") 말해 f"숫자 {len(숫자들)}개를 불러왔습니다: {숫자들}" 말해 "" 오름차순 = sorted(숫자들) 말해 "sorted(숫자들)은 새 리스트를 만듭니다:" 말해 오름차순 말해 "원래 리스트는 그대로입니다:" 말해 숫자들 말해 "" 숫자들.sort() 말해 "숫자들.sort()는 리스트 자체를 바꿉니다:" 말해 숫자들 말해 "" 내림차순 = sorted(숫자들, reverse=True) 말해 "reverse=True로 내림차순 정렬:" 말해 내림차순 말해 "가장 작은 수: " + str(숫자들[0]) 말해 "가장 큰 수: " + str(숫자들[-1]) 말해 "" 말해 "정렬한 목록, 한 줄에 하나씩:" for n in 숫자들: 말해 " " + str(n)데이터 파일이 있는 상태에서 실행합니다:
nme 실행 sorting.ko숫자 6개를 불러왔습니다: [5, 2, 9, 1, 7, 3] sorted(숫자들)은 새 리스트를 만듭니다: [1, 2, 3, 5, 7, 9] 원래 리스트는 그대로입니다: [5, 2, 9, 1, 7, 3] 숫자들.sort()는 리스트 자체를 바꿉니다: [1, 2, 3, 5, 7, 9] reverse=True로 내림차순 정렬: [9, 7, 5, 3, 2, 1] 가장 작은 수: 1 가장 큰 수: 9 정렬한 목록, 한 줄에 하나씩: 1 2 3 5 7 9숫자들.sort()는 리스트를 영구히 바꿨기 때문에 내림차순 줄이 정렬된 순서에서 시작하고, 한 줄에 하나씩 목록도 그것을 사용합니다.영어는 같은 단계를
use file latest와json_load로 씁니다. 전체 영어 프로그램은 영어 가이드에 있습니다.
직접 해보기
numbers.json을 [100, 3, 42, 17]로 바꾸고 sorting.ko.nme를 다시
실행해 보세요. 모든 순서가 함께 바뀝니다. 그런 다음 정렬 뒤에
숫자들.reverse()를 추가해 다시 실행하면 목록이 큰 수부터 작은 수로
펼쳐집니다.
배운 것
sorted(숫자들)은 새 오름차순 리스트를 돌려주고 원본은 그대로 둡니다.숫자들.sort()는 리스트를 그 자리에서 다시 섭니다. 예전 순서는 사라집니다.sorted(숫자들, reverse=True)는 내림차순 사본을 만듭니다.- 정렬 뒤에는
숫자들[0]이 가장 작은 수,숫자들[-1]이 가장 큰 수입니다. - 오름차순은 작은 수부터, 내림차순은 큰 수부터입니다.