needmoreeasy EN 한국어
배우기

39 — 정렬 — 목록 순서 정하기

★★★★☆ (4/5)데이터
선수 지식
16 — 이름 목록, 30 — 데이터
결과물
JSON 파일에서 숫자를 불러와 Python sort로 오름차순·내림차순 순서를 보여 주는 프로그램

불러온 목록은 적은 순서 그대로 오는데, 그 순서가 보여 주고 싶은 순서인 경우는 드뭅니다. Python의 sort 메서드는 목록 자체를 순서대로 바꾸고, sorted()는 정렬된 사본을 만듭니다. 이 가이드는 JSON에서 숫자를 불러와 두 방식으로 정렬하고 그 차이를 설명합니다.

단계

  1. JSON 목록 하나로 numbers.json을 만듭니다:

    [5, 2, 9, 1, 7, 3]
    
    실행해 보기 →

    30 가이드가 같은 파일을 썼습니다. 여기서 숫자는 일부러 순서를 섞어 두었습니다.

  2. 14 가이드의 json읽기로 목록을 불러옵니다:

    파일 사용 최신
    숫자들 = json읽기("numbers.json")
    말해 f"숫자 {len(숫자들)}개를 불러왔습니다: {숫자들}"
    
    실행해 보기 →

    실행하면 숫자 6개를 불러왔습니다: [5, 2, 9, 1, 7, 3]이 출력됩니다.

  3. sorted(숫자들)은 오름차순의 새 리스트를 돌려주고 원본은 건드리지 않습니다:

    숫자들 = [5, 2, 9, 1, 7, 3]
    오름차순 = sorted(숫자들)
    말해 오름차순
    말해 숫자들
    
    실행해 보기 →

    [1, 2, 3, 5, 7, 9] 다음에 [5, 2, 9, 1, 7, 3]이 출력됩니다 — 원본은 그대로입니다.

  4. 숫자들.sort()는 리스트 자체를 바꿉니다. 호출 뒤에는 변수가 정렬된 목록을 담고 예전 순서는 사라집니다:

    숫자들 = [5, 2, 9, 1, 7, 3]
    숫자들.sort()
    말해 숫자들
    
    실행해 보기 →

    [1, 2, 3, 5, 7, 9]가 출력됩니다. 이것이 "오름차순"입니다 — 작은 수가 먼저, 큰 수가 마지막입니다.

  5. 내림차순은 뒤집어서 큰 수부터 나오게 합니다. sorted(숫자들, reverse=True)숫자들을 건드리지 않고 새 리스트를 만듭니다:

    숫자들 = [1, 2, 3, 5, 7, 9]
    내림차순 = sorted(숫자들, reverse=True)
    말해 내림차순
    
    실행해 보기 →

    [9, 7, 5, 3, 2, 1]이 출력됩니다.

  6. 이제 보고서 전체를 한 파일에 담습니다. 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)
    
    실행해 보기 →
  7. 데이터 파일이 있는 상태에서 실행합니다:

    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()는 리스트를 영구히 바꿨기 때문에 내림차순 줄이 정렬된 순서에서 시작하고, 한 줄에 하나씩 목록도 그것을 사용합니다.

  8. 영어는 같은 단계를 use file latestjson_load로 씁니다. 전체 영어 프로그램은 영어 가이드에 있습니다.

직접 해보기

numbers.json[100, 3, 42, 17]로 바꾸고 sorting.ko.nme를 다시 실행해 보세요. 모든 순서가 함께 바뀝니다. 그런 다음 정렬 뒤에 숫자들.reverse()를 추가해 다시 실행하면 목록이 큰 수부터 작은 수로 펼쳐집니다.

배운 것

  • sorted(숫자들)은 새 오름차순 리스트를 돌려주고 원본은 그대로 둡니다.
  • 숫자들.sort()는 리스트를 그 자리에서 다시 섭니다. 예전 순서는 사라집니다.
  • sorted(숫자들, reverse=True)는 내림차순 사본을 만듭니다.
  • 정렬 뒤에는 숫자들[0]이 가장 작은 수, 숫자들[-1]이 가장 큰 수입니다.
  • 오름차순은 작은 수부터, 내림차순은 큰 수부터입니다.

GitHub에서 이 문서 보기