Python 리스트 합치기 - Python liseuteu habchigi

문자열 나누기 

구분자를 기준으로 문자열을 잘라 리스트 형식으로 반환한다. 파라미터에 아무값도 주지 않으면 공백을 기준으로 문자열을 자른다.

문자열.split(구분자)

** 공백을 기준으로 문자열 나누기

str = "apple banana orange grape"

print(str.split())

>> ['apple', 'banana', 'orange', 'grape']


** 구분자('-')를 기준으로 문자열 나누기

str = "apple-banana-orange-grape"

print(str.split('-'))

>> ['apple', 'banana', 'orange', 'grape']

문자열 합치기

join함수는 리스트의 문자열을 합친다.

''.join(리스트)

arr = ['a', 'b', 'c', 'd']

print(''.join(str))

>> abcd

리스트 문자열로 합칠 때, 특정 문자를 넣어서 합칠 수 있다.

'특정문자열'.join(리스트)

arr = ['a', 'b', 'c', 'd']

print('-'.join(str))

>> a-b-c-d

문제 추천

[백준] 2941번: 크로아티아 알파벳

www.acmicpc.net/problem/2941

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net

Python 리스트 합치기 - Python liseuteu habchigi

리스트의 문자열 요소들을 하나로 합치고 싶다면 join 함수를 사용하면 됩니다. 조금 더 정확히 말하자면 문자열 객체의 join 메소드입니다.

'구분자'.join(리스트)

예를 들어, a = ['문', '태', '호', '바', '보'] 라는 리스트가 있다고 가정하겠습니다. 리스트 내 5개의 요소를 모두 합쳐서 하나의 문자열로 만들고 싶다면, 

''.join(a)

로 해주면 됩니다. 그러면 결과는 다음과 같이 나옵니다.

Python 리스트 합치기 - Python liseuteu habchigi

만약 문자열을 합칠때 사이사이에 -를 넣고 싶다면, 다음과 같이 해주면 됩니다.

'-'.join(a)

Python 리스트 합치기 - Python liseuteu habchigi

이번에는 구분자로 /를 넣어줘볼까요?

'/'.join(a)

Python 리스트 합치기 - Python liseuteu habchigi

join 함수는 split 함수와 함께 많이 쓰이니 알아두시면 좋을 듯합니다. 저도 실무에서 자주 사용하고 있습니다. 

관련 글

☞ [python] 숫자 여러 개 한 번에 입력받기, input(), split(), map() 함수

Join함수는 리스트로 되어 있는 문자열 데이터들을 설정한 구분자(separator)로 구분하여 문자열 형태로 반환하는 내장 함수이다. 문자열을 리스트 형태로 나누는 것을 split 함수라고 한다면, 리스트를 문자열로 바꾸는 것이니 split의 reverse 함수라고 이해하면 된다.

Python 리스트 합치기 - Python liseuteu habchigi
파이썬 리스트 문자열 합치기, join 함수

사용방법

구분자.join(문자열리스트)

구분자(separator)가 앞에 오고 문자열이 뒤에 오는 구조라서 좀 헷갈릴 수 있다.

사용예시

공백구분자

>>> str_list = ["동해물과","백두산이","마르고","닳도록"]
>>> str = " ".join(str_list)
>>> print(str)
동해물과 백두산이 마르고 닳도록

구분자를 공백으로 지정하여, 문자열을 출력하는 예시

쉼표(,) 구분자

>>> str_list = ["math","english","korean"]
>>> str = ",".join(str_list)
>>> print(str)
math,english,korean

이번에는 "," 즉 쉼표를 구분자로 써서 리스트 값을 조인하여 출력하는 예시.

문자열 리스트를 join하지 않을 경우

>>> int_list = [1,2,3,4,5]
>>> joined = ",".join(int_list)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found

문자열 리스트를 조인하지 않을 경우 위와 같은 에러가 발생한다. str이 발견되어야 하는데 int값이 발견되어서 에러가 발생하는 것이다.

>>> mix_list = ["동해물과","백두산이",1,"마르고"]
>>> print(mix_list)
['동해물과', '백두산이', 1, '마르고']
>>> joined = ",".join(mix_list)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 2: expected str instance, int found

문자열과 정수형을 섞은 리스트 역시 마찬가지다. join을 사용할 때에는 문자열 데이터가 필수적으로 들어가는지 체크를 하여 출력을 하거나, 이럴땐 아래와 같이 for문을 활용하여 처리하는 방식이 있다.

다른형이 있을 경우

mix_list = ["동해물과","백두산이",1,"마르고"]
# 문자열 변수 선언
joined_str = ""
for v in mix_list:
    # 문자열 변수에 값이 있을 경우
    if(len(joined_str) > 0):
        # 콤마를 추가한다
        joined_str += ","
    joined_str += str(v)
print(joined_str)

다른 형태가 있을 경우 이렇게 for문으로 처리를 하는 방법도 있다.

Python list 값 합치고 중복 내용 지우고 정렬하기

코드>>

####################################################################
# Raw data
####################################################################
x = [0,20,40,60,80,90,100,105,110,115]
cae_x = [0,10,20,30,40,50,60,70,80,90,100,115]

####################################################################
# Combine x and cae_x
# Remove repeated x data
# Sort x data
####################################################################
total_x = []
total_x = x + cae_x
print("Combined x : ", total_x)
total_x = list(set(total_x))
print("Removing repeated x : ", total_x)
total_x.sort()
print("Sorted X : ", total_x)

결과>>

Combined x :  [0, 20, 40, 60, 80, 90, 100, 105, 110, 115, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 115]
Removing repeated x :  [0, 100, 70, 40, 105, 10, 110, 80, 50, 115, 20, 90, 60, 30]
Sorted X :  [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 105, 110, 115]

주석>>

  • 리스트 값은 간단하게 + 기호로 합칠 수 있다.
  • 반복되는 내용은 set 함수로 제거 가능하다 다시 list 로 변경해야 된다.
  • 리스트 내장 함수 sort로 순차적으로 다시 정렬 가능하다.