리스트의 내용을 출력하기 위한 여러 가지 방법을 소개합니다.
1. for 반복문의 이용
가장 기초적인 방법으로 리스트의 원소들을 하나씩 하나씩 순회하면서 화면에 출력하는 방식입니다.
lst = ['A','B','C','D','E']
for i in lst:
print(i)
출력 :
A
B
C
D
E
해당 방식으로 출력을 사용하는 경우, print 함수의 end 파라미터를 사용하여 출력 형태를 제어할 수 있습니다. end는 이름처럼 리스트 원소 하나의 출력이 끝나고 그다음에 어떤 값을 추가할지를 결정합니다.
end 파라미터는 `print(element, end = '')` 와 같은 형식으로 사용하며, 위의 예시처럼 생략도 가능한데요. 만일 end 파라미터를 생략한다면, 우리에게는 보이지 않지만 end에 기본적으로 `\n` 개행문자가 들어갑니다.
따라서 첫 번째 순회로 A를 화면에 출력한 후에 한 줄 개행하여 다음줄로 위치가 이동하고, 두 번째 순회로 이동한 자리에서 B를 출력하고 다시 개행하고... 이를 반복하여 5개의 원소가 총 5줄로 출력됩니다.
만약 개행 없이 한 줄로 리스트의 모든 원소를 출력하고 싶다면 `end=''` 을 사용하면 되며, 원소 사이에 공백이나 원하는 구분자를 추가해서 출력할 수도 있습니다.
lst = ['A','B','C','D','E']
for i in lst:
# end에 원하는 문자열 형식을 전달할 수 있습니다.
print(i,end='^')
#한줄 개행해주기 위해 print()를 호출했습니다
print()
for i in lst:
print(i,end='')
출력 :
A^B^C^D^E
ABCDE
2. join 함수의 이용
join 함수는 iterable의 문자열들을 이어 붙인 문자열을 돌려줍니다. 이를 쉽게 말하자면 반복 가능한 객체, 즉 리스트의 내용들을 이어 붙여서 리턴합니다. 이때 어떻게 이어 붙일지는 사용자가 결정할 수 있습니다.
lst = ['A','B','C','D','E']
# 구분자를 먼저 표기하고, 그 뒤에 join 함수가 오는 형식입니다.
print(''.join(lst))
# 원하는 대로 여러가지 구분자를 넣을 수 있습니다.
print('~'.join(lst))
출력 :
ABCDE
A~B~C~D~E
이 경우 대상 리스트가 아니라 구분자가 join 함수의 주체가 된다는 점이 조금 헷갈리실 수 있는데요.
영어문장을 읽듯 구분자가 리스트를 모은다(join)라고 생각하면 기억하기가 쉽습니다.
3. 언패킹 연산자(*)의 이용
리스트의 요소들을 언패킹(unpacking)해주는 연산자인 *를 이용해서 리스트 내용을 출력할 수도 있습니다.
언패킹 연산자는 리스트 안에 패킹되어 있는 원소들의 포장을 풀어주는 역할을 한다고 생각하면 이해가 쉽습니다. 리스트의 내용을 각각 개별 원소들로 분리시켜 주는 것입니다.
# 리스트 안에 원소들이 [] 패킹되어 있는 상태
lst = ['A','B','C','D','E']
# 언패킹 연산자의 사용 없이 그냥 리스트를 출력
print(lst)
# 해당 리스트를 언패킹하여 개별 원소들을 print함수에 전달해 주도록 한다.
print(*lst)
출력 :
# 리스트가 그대로 출력됩니다.
['A', 'B', 'C', 'D', 'E']
# 리스트의 개별 요소들이 출력됩니다.
A B C D E
단, 여기서 주의해야 할 점은 언패킹 연산자를 활용하여 리스트를 출력하는 경우 기본적으로 각 원소들은 공백으로 구분되어 출력된다는 것입니다.
위에서 출력된 모습을 보시면 각 원소가 공백으로 한 칸씩 떨어져 있는 것을 볼 수 있습니다.
즉, join에서 구분자를 ' ' 으로 주는 경우, for 반복문 출력에서 print 함수의 end 값을 end=' ' 으로 주는 경우와 동일합니다.
lst = ['A','B','C','D','E']
# 아래 세가지 출력은 동일한 형식을 가집니다.
for i in lst:
print(i,end=' ')
print(' '.join(lst))
print(*lst)
출력 :
A B C D E
A B C D E
A B C D E
그럼 만약 언패킹 연산자를 사용하면서 구분자를 공백이 아닌 다른 것으로 하고 싶다면 어떨까요?
이번에는 print 함수의 sep 파라미터를 이용합니다. separator의 약어로, `print(element, sep = '')` 형식입니다.
해당 파라미터는 여러 문자를 출력하고자 할 때 그 문자들을 어떻게 구분할지를 결정합니다. 이를 언패킹 연산자와 함께 활용하여 여러 구분자로 출력할 수 있습니다.
lst = ['A','B','C','D','E']
# *lst는 언패킹되어 'A','B','C','D','E'로 전달되고 있기 때문에, 이들 사이의 구분자를 설정 가능합니다.
print(*lst, sep='@')
출력 :
A@B@C@D@E
지금까지 리스트 그 자체가 아닌, 리스트의 원소들을 원하는 형식으로 출력하는 여러 방법들에 대해 알아보았습니다.
코딩테스트 문제를 풀다가 언패킹 연산자로 내용을 출력하는 경우에는 디폴트 구분자가 공백이라는 사실을 몰랐어서 틀린 답을 제출하게 되었었는데요. 그래서 기본적인 내용이지만 잊어버리지 않도록 정리해 보았습니다. 혹시나 비슷한 경험을 하신 분들께도 도움이 될 수 있다면 좋겠습니다.
'python' 카테고리의 다른 글
[python] string 문자열 관련 메서드 간단 정리 (0) | 2023.09.29 |
---|---|
[python] bisect_left와 bisect_right 이해하기 (0) | 2023.08.15 |
[python] 파이썬 리스트 extend 함수값이 none으로 나오는 이유 (0) | 2023.06.29 |
[python] 파이썬 파일 처리와 디렉토리 (1) | 2023.05.03 |