이 글에서는 파이썬 리스트에 있는 요소 중 숫자가 아닌 인접한 단어들만 결합하는 방법을 알아봅니다. 문자열 요소들은 하나로 합치고, 숫자 요소들은 그대로 뒤에 배치하는 것이 핵심입니다.
문제 해결 접근 방식
- 리스트를 초기화합니다.
isalpha()메서드를 사용해 숫자가 아닌 단어(문자열)를 찾습니다.join()메서드로 찾은 단어들을 하나로 결합합니다.isdigit()메서드로 숫자 요소를 찾아 결과의 끝에 추가합니다.- 최종 결과를 출력합니다.
예제 1: 리스트 컴프리헨션 활용
# 리스트 초기화
strings = ['Tutorials', '56', '45', 'point', '1', '4']
# 결과를 담을 빈 리스트
result = []
# 문자로만 구성된 요소와 숫자로만 구성된 요소를 각각 추출
words = [element for element in strings if element.isalpha()]
digits = [element for element in strings if element.isdigit()]
# 단어를 결합해 결과에 추가하고, 숫자 요소들을 뒤에 붙임
result.append("".join(words))
result += digits
# 결과 출력
print(result)위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
출력 결과
['Tutorialspoint', '56', '45', '1', '4']
리스트 컴프리헨션 덕분에 코드가 간결하며, isalpha()와 isdigit() 조건으로 문자와 숫자를 깔끔하게 분류할 수 있습니다.
예제 2: filter 함수 활용
이번에는 같은 문제를 filter() 함수를 사용해 다른 방식으로 해결해 보겠습니다. 필터링 조건을 별도의 함수로 정의하면 코드의 가독성이 더욱 좋아집니다.
# 리스트 초기화
strings = ['Tutorials', '56', '45', 'point', '1', '4']
def isalpha(string):
return string.isalpha()
def isdigit(string):
return string.isdigit()
# filter로 단어를 추출해 결합하고, 숫자는 언패킹하여 함께 담음
result = ["".join(filter(isalpha, strings)), *filter(isdigit, strings)]
# 결과 출력
print(result)위 코드 역시 동일한 결과를 출력합니다.
출력 결과
['Tutorialspoint', '56', '45', '1', '4']
마무리
지금까지 파이썬에서 리스트 내 인접한 단어만 결합하고 숫자는 분리해 두는 두 가지 방법을 살펴봤습니다. 리스트 컴프리헨션은 한 줄로 간결하게 처리할 수 있고, filter() 함수는 조건 로직을 함수로 분리해 재사용성을 높일 수 있다는 장점이 있습니다. 상황에 맞는 방법을 선택해 사용해 보세요. 글에 대해 궁금한 점이 있다면 댓글로 남겨주세요.