내가 이해한 join함수는 리스트의 값들을 구분자를 사이에 넣어 문자열로 만들어 주는 함수입니다.
좀 더 어렵게 얘기를 한다면 join함수는 리스트안의 값들은 설정한 구분자(separator)로 구분하여 문자열 형태로 반환하는 함수입니다.
join함수는 (구분자).join(리스트)형식으로 사용됩니다. 리스트 안에 있는 값들에 구분자를 사이사이에 붙혀서 문자열 형태로 반환해줍니다.
예를 들어 아래와 같이 코딩해주면
list = [a,b,c,d,e]
str = ''.join(list)
print(str)
#출력
abcde
구분자로 ''를 사용하여 join함수를 사용했으므로 ''즉 공백이 없이 각 값들이 붙어서 문자열로 반환 됩니다.
''대신 ""를 사용해도 반환값은 동일합니다.
list = [a,b,c,d,e]
str = "".join(list)
print(str)
#출력
abcde
이번엔 구분자에 특정 문자 하나를 넣어 join함수를 사용해보겠습니다.
list = ["Spring","Summer","Fall","Winter"]
str = "-".join(list)
print(str)
#출력
Spring-Summer-Fall-Winter
구분자 자리에 문자 하나뿐만 아니라 문자열을 넣는 것도 가능합니다.
아래 코드에선 구분자에 " and "를 사용하여 좀 아련한 문장을 만들어 보겠습니다.
list = ["Spring","Summer","Fall","Winter"]
str = " and ".join(list)
print(str)
#출력
Spring and Summer and Fall and Winter
join함수는 이스케이프 코드도 인식이 가능하다.
list = ["Father","And","Mother","I","Love","You"]
letter = "\n".join(list)
print(letter)
#출력
Father
And
Mother
I
Love
You
이처럼 /n를 사용해서 감동적인 세로드립을 출력할 수 있습니다.
join함수는 list안에 원소가 문자형일때만 사용 가능합나다.
따라서 list에 문자형이 아닌 다른 int와 같은 요소가 있다면 오류가 발생합니다.
list = [1,2,3,4]
str = "-".join(list)
print(str)
#출력:
str = "-".join(list)
^^^^^^^^^^^^^^
TypeError: sequence item 0: expected str instance, int found
lit안의 모든 요소가 str형태여야 join을 사용할 수 있습니다.
list = [1,"two",3,"four"]
str = "-".join(list)
print(str)
#출력
str = "-".join(list)
^^^^^^^^^^^^^^
TypeError: sequence item 0: expected str instance, int found
list안에 str형태가 있음에도 int값이 섞여있으면 오류가 발생합니다.
이런 경우를 방지하려면 list안의 모든 값들을 str형태로 변환 해주어야 합니다.
많은 해결법이 있겠지만 오늘은 map을 사용하여 해결해보도록 하겠습니다.
list = [1,"two",3,"four"]
str = "-".join(map(str,list))
print(str)
#출력
1-two-3-four
map함수를 이용하여 list안의 모든 값들은 str형태로 바꿔주고 join함수를 사용하니 에러가 나지않고 정상적으로 실행되었습니다.
이번에 사용한 map함수는 다음 게시글에서 자세하게 소개하겠습니다.
이상으로 join함수를 알아보았습니다.
감사합니다.