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

Python – 구분자를 기준으로 리스트 요소 분리하기

파이썬에서는 하나의 문자열 안에 두 개의 값이 '@' 같은 특정 구분자(delimiter)로 연결되어 있는 경우, 이를 기준으로 요소를 분리해야 할 때가 자주 있습니다. 이 글에서는 split() 함수와 리스트 컴프리헨션(list comprehension)을 활용하여 구분자 앞부분과 뒷부분을 각각 별도의 리스트로 나누는 방법을 알아봅니다.

예제

아래는 구분자를 기준으로 리스트의 요소를 분리하는 전체 예제 코드입니다.

my_list = ["89@21", "58@51", "19@61", "11@10", "32@65", "34@45", "87@90", "32@21", '1@345']
print("The list is : " )
print(my_list)

print("The list after sorting is :")
my_list.sort()
print(my_list)

my_delimiter = "@"
print("The delimiter is :")
print(my_delimiter)

result_before_delim, result_after_delim = [ele.split(my_delimiter)[0] for ele in my_list],[ele.split(my_delimiter)[1] for ele in my_list]

print("The result containing elements before delimiter is : ")
print(result_before_delim)

print("The result containing elements after delimiter is : ")
print(result_after_delim)

출력 결과

The list is :
['89@21', '58@51', '19@61', '11@10', '32@65', '34@45', '87@90', '32@21', '1@345']
The list after sorting is :
['11@10', '19@61', '1@345', '32@21', '32@65', '34@45', '58@51', '87@90', '89@21']
The delimiter is :
@
The result containing elements before delimiter is :
['11', '19', '1', '32', '32', '34', '58', '87', '89']
The result containing elements after delimiter is :
['10', '61', '345', '21', '65', '45', '51', '90', '21']

코드 설명

  • 먼저 리스트를 정의한 후 콘솔에 출력합니다.

  • sort() 메서드로 리스트를 오름차순 정렬한 뒤 다시 콘솔에 출력합니다.

  • 사용할 구분자 값('@')을 정의하고 콘솔에 출력합니다.

  • 리스트 컴프리헨션을 사용하여 리스트의 모든 요소에 대해 split() 메서드를 호출하고, 구분자를 기준으로 문자열을 분리합니다.

  • split()[0]은 구분자 앞에 위치한 부분을, split()[1]은 구분자 뒤에 위치한 부분을 추출하며, 그 결과가 콘솔에 출력됩니다.

이처럼 split()과 리스트 컴프리헨션을 조합하면 별도의 반복문 없이도 한 줄의 코드로 간결하게 문자열 요소를 분리할 수 있습니다. 참고로, 구분자가 한 요소 안에 여러 번 등장하거나 일부 요소에 구분자가 없을 가능성이 있다면, maxsplit 매개변수 활용이나 예외 처리를 함께 고려하는 것이 안전합니다.