Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬에서 문자열 리스트를 정렬된 정수 리스트로 변환하는 방법

파이썬으로 데이터를 분석하다 보면 숫자가 문자열 형태로 저장되어 있어 이를 처리해야 하는 경우가 자주 발생합니다. 예를 들어 ['54', '21', '-10', '92', '5']처럼 숫자가 따옴표로 묶인 문자열로 되어 있다면, 단순히 정렬만 해서는 원하는 결과를 얻을 수 없습니다. 이 글에서는 문자열로 된 숫자 리스트를 정수로 변환한 뒤 오름차순으로 정렬하는 세 가지 방법을 소개합니다.

1. map과 sorted 함수 함께 사용하기

가장 간결한 방법은 map() 함수로 리스트의 모든 요소에 int 변환을 일괄 적용한 후, sorted() 함수로 정렬하는 것입니다. 이 방식은 음수 문자열도 문제없이 처리할 수 있습니다.

예제 코드

listA = ['54', '21', '-10', '92', '5']
# 주어진 리스트
print("Given list : \n", listA)
# map으로 int 변환
listint = map(int, listA)
# sorted로 정렬
res = sorted(listint)
# 결과 출력
print("Sorted list of integers: \n",res)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given list :
['54', '21', '-10', '92', '5']
Sorted list of integers:
[-10, 5, 21, 54, 92]

2. 리스트 컴프리헨션과 sort 메서드 사용하기

두 번째 방법은 리스트 컴프리헨션(for 루프)을 이용해 각 요소를 int로 변환하여 새 리스트를 만든 뒤, 리스트의 sort() 메서드로 정렬하는 방식입니다. sorted()와 달리 sort()는 원본 리스트 자체를 변경한다는 점이 특징입니다.

예제 코드

listA = ['54', '21', '-10', '92', '5']
# 주어진 리스트
print("Given list : \n", listA)
# int로 변환
res = [int(x) for x in listA]
# 정렬
res.sort()
# 결과 출력
print("Sorted list of integers: \n",res)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given list :
['54', '21', '-10', '92', '5']
Sorted list of integers:
[-10, 5, 21, 54, 92]

3. sorted와 제너레이터 표현식 사용하기

세 번째 방법은 앞선 방법과 유사하지만, 변환과 정렬을 하나의 표현식으로 처리한다는 점이 다릅니다. 제너레이터 표현식으로 int(x)를 적용한 결과를 곧바로 sorted() 함수에 전달하므로 코드가 더욱 간결해집니다.

예제 코드

listA = ['54', '21', '-10', '92', '5']
# 주어진 리스트
print("Given list : \n", listA)
# 변환과 정렬을 한 번에 처리
res = sorted(int(x) for x in listA)
# 결과 출력
print("Sorted list of integers: \n",res)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Given list :
['54', '21', '-10', '92', '5']
Sorted list of integers:
[-10, 5, 21, 54, 92]

마무리

세 가지 방법 모두 동일한 결과를 반환하며, 음수 값도 올바르게 정렬됩니다. 상황에 따라 선택 기준은 다음과 같습니다.

  • map + sorted: 가장 파이썬다운 관용적(idiomatic) 표현으로, 간결성과 성능 면에서 유리합니다.
  • 리스트 컴프리헨션 + sort(): 변환 과정에 추가 로직(조건문 등)을 넣기 쉽고, 원본 리스트를 직접 수정해야 할 때 적합합니다.
  • sorted + 제너레이터 표현식: 한 줄로 변환과 정렬을 모두 처리해야 하는 경우 유용합니다.

데이터 크기가 크지 않다면 어떤 방법을 사용해도 무방하며, 코드의 가독성과 유지보수성을 기준으로 선택하면 됩니다.