Python 예제와 함께 sort() 나열

⚡ 스마트 요약

Python `list sort()` 함수는 리스트의 요소를 기본적으로 오름차순으로 정렬하거나 `reverse` 매개변수를 사용하여 내림차순으로 정렬합니다. 또한 선택적 `key function` 함수를 사용하면 길이, 튜플 필드 또는 사용자 정의 함수와 같은 사용자 지정 기준으로 정렬할 수 있습니다.

  • 🔘 구문 : sort() 메서드는 선택적 key 및 reverse 매개변수를 허용하며 복사본을 만들지 않고 원본 목록을 수정합니다.
  • ☑️ 주문 관리: reverse 매개변수를 True로 설정하면 기본값인 오름차순 대신 가장 높은 값에서 가장 낮은 값으로 정렬됩니다.
  • ✅ 주요 매개변수: len과 같은 핵심 함수는 문자열 길이 또는 튜플 필드와 같은 파생 값을 기준으로 요소를 정렬합니다.
  • 🧪 정렬 vs 정렬됨: sort() 메서드는 리스트를 제자리에서 변경하고 None을 반환하는 반면, sorted() 메서드는 새 리스트를 반환하고 원본 리스트는 유지합니다.
  • 🛠️ 사용자 지정 기준: 람다 표현식과 사용자 정의 함수를 사용하면 sort() 함수를 통해 튜플, 딕셔너리, 명명된 튜플을 선택한 속성을 기준으로 정렬할 수 있습니다.
  • 🤖 AI 워크플로우: 머신러닝 파이프라인은 예측 결과를 점수 순으로 정렬하고 순위 지정 또는 평가 전에 상위 결과를 선택합니다.

Python 목록 정렬()

sort() 메소드는 무엇입니까? Python?

sort() 함수는 Python 리스트를 오름차순 또는 내림차순으로 정렬하는 데 도움이 됩니다. 숫자 리스트, 튜플, 문자열 리스트를 정렬하는 데 사용할 수 있습니다. 별도의 리스트를 생성하지 않고 원본 리스트를 수정하거나 정렬합니다.

Sort 메소드의 구문 Python

정렬 함수의 구문은 다음과 같습니다.

List.sort(key=…, reverse=…)

정렬 함수에는 다음과 같은 두 개의 선택적 매개변수가 있습니다.

  • 키:- 정렬 기준에 따라 기능을 정렬하는 데 사용됩니다.
  • Reverse: – 이 함수는 true 또는 false 값을 받습니다. true인 경우, 이 사용자 지정 함수는 목록을 내림차순으로 정렬합니다.

Sort 메서드를 사용하여 목록을 오름차순으로 정렬 Python

In Python, 정렬 기능은 기본적으로 모든 목록을 오름차순으로 정렬합니다. 오름차순 목록은 왼쪽에 가장 낮은 값이 있고 오른쪽에 가장 높은 값이 있습니다.

예:

Python 암호:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

출력:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Code 설명 :

  • 위 목록은 무작위로 정의된 문자열 목록입니다.
  • 정렬 기능 Python 왼쪽에 가장 낮은 단어 길이, 오른쪽에 가장 높은 단어 길이를 사용하여 무작위 목록을 오름차순으로 정렬하는 데 도움이 됩니다.

목록을 내림차순으로 정렬

정렬 기능을 사용하면 목록을 내림차순으로 정렬할 수도 있습니다. 순서로 정의할 수 있습니다. 여기서 목록은 가장 높은 값으로 시작하고 가장 낮은 값으로 끝납니다.

목록을 내림차순으로 정렬하려면 정렬 함수의 reverse 매개변수를 true로 지정합니다.

아래 예시를 살펴보겠습니다.

Python 암호:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

출력:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

참고: 런타임 오류를 방지하려면 reverse 매개변수에 "True"라는 단어를 할당할 때 대문자 "T"로 시작하는지 확인하세요.

Sort 메서드를 사용하여 튜플 목록 정렬 Python

Python 튜플 순서가 지정된 시퀀스를 따르는 불변 요소의 컬렉션입니다. Python의 정렬 함수는 사용자 정의된 함수와 람다 표현식을 사용하여 튜플 목록을 정렬하는 데 사용할 수 있습니다.

사용자 지정 함수는 이름 없이 람다 표현식으로 생성할 수 있습니다. 람다 표현식의 구문은 다음과 같습니다.

구문 :

Lambda arguments: expression

위 구문은 아래 Python 코드와 동일합니다.

def name (arguments):
return expression

다음은 주요 매개변수를 사용하는 정렬 함수가 튜플의 요소를 정렬하는 데 어떻게 도움이 되는지 보여주는 튜플 및 사용자 정의 함수의 예입니다.

Python 암호:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

출력:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Code 설명 :

  • 튜플을 내림차순으로 정렬하려면 reverse 매개변수를 true로 정의합니다.
  • 사용자 정의된 함수는 튜플의 두 번째 요소를 사용합니다.
  • 이는 정렬 기능의 키로 활용됩니다.

람다 표현식을 사용하는 아래 예를 살펴보겠습니다.

Python 암호:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

출력:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

설명 :

  • 람다 식은 키를 튜플의 두 번째 요소로 사용하여 튜플의 요소를 높은 수준에서 낮은 수준으로 정렬하는 데 도움이 됩니다.
  • 프로그램은 튜플의 두 번째 요소의 가장 높은 값을 확인합니다.

Len을 주요 매개변수로 사용하여 목록 항목 정렬

`Len`은 항목의 길이를 판별하는 내장 함수입니다. 판별된 길이는 정렬 함수의 인덱싱에 사용할 수 있습니다. 이를 위해 `Len` 값을 변수에 할당합니다. Python 정렬 함수의 주요 매개변수입니다.

다음 Python 코드는 정렬 함수와 함께 Len 함수를 사용하는 방법을 보여줍니다.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

출력:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Code 설명 :

Len을 사용하여 목록 항목 정렬

  • 요소의 길이는 목록을 오름차순으로 정렬하기 위한 key 매개변수의 인덱스가 됩니다.
  • Len 함수는 기본 목록에 있는 각 요소의 길이를 추정합니다.
  • 가장 짧은 요소는 왼쪽에, 가장 큰 요소는 오른쪽에 유지됩니다.
  • 여기서 'alto'와 'java'라는 단어는 길이가 4이며, 목록에서 맨 앞에 위치하고 그 뒤에 다른 단어들이 이어집니다. Guru길이가 6인 99입니다.

이 예시는 아래와 같이 정렬 함수의 reverse 매개변수 개념을 설명합니다.

Python Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

출력:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

사용자 정의 함수를 주요 매개변수로 사용하여 목록 항목 정렬

리스트를 정렬하기 위해 사용자 정의 함수를 주요 매개변수로 사용할 수도 있습니다. 다음은 예시입니다.

Python Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

출력:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Code 설명 :

  • 연도를 반환하는 사용자 정의 함수가 생성됩니다.
  • key 매개변수는 사용자 정의 함수를 기준으로 사용합니다.
  • 정렬 기능은 "연도" 요소의 값을 기준으로 목록을 오름차순으로 정렬합니다.

정렬 방법과 정렬 방법의 차이점 Python

위의 예제들을 살펴본 후에는 두 정렬 도구를 직접 비교해 보는 것이 도움이 될 것입니다. 차이점을 정리하기 전에, `Sorted` 메서드의 구문을 먼저 이해해 보겠습니다.

Python 구문 :

sorted (list_name, reverse=…., key=..)

Code 설명 :

  • sorted 함수는 목록을 오름차순 또는 내림차순으로 정렬합니다.
  • 이 함수는 세 개의 매개변수를 허용하며, 그 중 두 매개변수는 선택적 유형이고 하나의 매개변수는 필수 유형입니다.
  • Sorted 메소드를 사용하는 경우 매개변수 list_name이 필요합니다.
  • Sorted 메서드는 모든 유형의 반복 가능한 목록을 입력으로 사용할 수 있습니다.
  • 정렬된 방법에서 주요 매개변수와 역 매개변수는 선택적 매개변수입니다. Python.

다음은 sort 및 sorted 함수를 사용하는 예입니다. Python:

Python 암호:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

출력:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Code 설명 :

  • 원본 목록은 정렬된 함수에 대한 필수 매개변수로 전달됩니다.
  • Sorted 메서드는 원래 목록 외에 새 목록을 반환합니다.
  • sorted 메소드에 추가 매개변수가 전달되지 않으므로 새 목록은 기본적으로 오름차순으로 정렬됩니다.
  • 정렬 기능은 새로운 목록을 만들지 않습니다.

주요 유사점과 차이점에 대한 내용은 다음과 같습니다.

정렬된 기능 정렬 기능
정렬된 함수 Python list_name을 필수 매개변수로 사용하는 내장 함수입니다. 정렬 기능은 원본 목록을 매개변수로 사용하지 않습니다.
Sorted 메서드는 새 목록을 반환합니다. 정렬 함수가 새 목록을 반환하지 않습니다.
반복 가능한 목록에는 정렬된 함수를 사용해야 합니다. 반복할 수 없는 목록에는 정렬 기능을 사용해야 합니다.
원본 목록을 수정하지 않으며 원본 데이터를 유지할 수 있습니다. 정렬 기능은 원래 기능을 수정하므로 메모리 공간을 덜 차지합니다.

정렬 방법 또는 정렬 방법을 언제 활용합니까?

인종 데이터를 정렬해야 하는 예를 들어 보겠습니다. 프로그램은 경주를 완료하는 데 걸린 턱받이 번호와 시간(초)을 사용합니다.

Python 암호:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

출력:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Code 설명 :

  • 기본 목록은 sort 함수와 sorted 함수를 모두 사용하여 정렬됩니다.
  • 정렬 기능을 적용하면 기본 목록이 손실됩니다.
  • 정렬 기능은 원본 데이터 세트에 적용되어서는 안 됩니다. 원본 데이터 세트의 복사본 버전이 있는 경우 사용해야 합니다.
  • Sorted 함수는 원래 목록을 유지합니다. 이를 재정의하지 않습니다.
  • 이것은 더 나은 것을 제공합니다 trac효율성과 효과적인 데이터 관리.

자주 묻는 질문

`sort()` 메서드에 `key=str.lower`를 전달합니다. 예를 들어 `names.sort(key=str.lower)`와 같이 사용합니다. 각 문자열은 소문자로 비교되므로 'Apple'과 'banana'는 대소문자를 구분하지 않고 알파벳 순으로 정렬됩니다. 최종 정렬된 목록에서도 모든 요소의 원래 대소문자는 유지됩니다.

숫자로만 구성된 리스트나 문자열로만 구성된 리스트를 정렬하는 것은 잘 되지만, 정수와 문자열처럼 서로 관련 없는 유형을 섞어서 정렬하면 TypeError가 발생합니다. Python 비교할 수 없습니다. 먼저 값을 비교 가능한 유형으로 변환하거나, 비교 가능한 키를 반환하는 키 함수를 전달하세요.

Python 과거에는 병합 정렬과 삽입 정렬의 혼합형인 Timsort를 사용했습니다. 버전 3.11부터는 Timsort에서 파생된 더욱 효율적인 병합 정책을 가진 Powersort를 사용합니다. 두 정렬 방식 모두 안정적이며 최악의 경우 O(n log n) 시간 복잡도로 실행됩니다.

네. `sort()` 메서드는 안정적이므로, 동일한 값을 비교한 요소는 원래의 상대적 순서를 유지합니다. 따라서 여러 기준에 따라 단계적으로 정렬할 수 있으며, 중요도가 가장 낮은 키부터 먼저 정렬하고 가장 중요한 키를 마지막에 정렬할 수 있습니다.

sort() 메서드는 최악의 경우와 평균적인 경우 모두 O(n log n) 시간 복잡도로 실행됩니다. 이미 대부분 정렬된 데이터의 경우, 기본 알고리즘이 기존에 정렬된 부분을 감지하고 다시 정렬하는 대신 재사용하기 때문에 시간 복잡도가 O(n)에 가까워집니다.

비교 시 각 항목을 정수로 변환하는 키를 전달합니다. 예를 들어 `nums.sort(key=int)`와 같이 사용합니다. 이렇게 하면 리스트가 문자가 아닌 숫자 값으로 정렬되므로 '10'은 '9' 다음에 올바르게 정렬됩니다. 저장된 요소는 문자열로 유지되며, 비교 시에만 정수 값이 사용됩니다.

정렬은 점수 또는 확률에 따라 예측값을 정렬하고, 순위 및 추천 시스템에서 상위 k개 결과를 선택하며, 데이터 준비 과정에서 레코드 순서를 지정합니다. 머신 러닝 파이프라인은 평가 전에 특징 값이나 모델 출력을 정렬하는 경우가 많으므로 내장 sort() 메서드는 일반적인 전처리 단계입니다.

네. GitHub Copilot과 같은 AI 에이전트는 간단한 주석을 기반으로 주요 함수와 람다 표현식을 포함한 `sort()` 및 `sorted()` 호출을 생성합니다. 이러한 도구는 반복문을 단일 정렬문으로 리팩토링할 수 있지만, 정렬 순서를 테스트하고 예외적인 상황에서 결과를 확인하는 것이 좋습니다.

이 게시물을 요약하면 다음과 같습니다.