[파이썬] 복잡한 리스트 보기 좋게 출력하기
파이썬에서 리스트(list)를 콘솔에 출력할 때 보통 print()
함수를 사용하게 되는데요.
예를 들어, 10개의 숫자를 담고 있는 간단한 리스트는 다음과 같이 출력할 수 있습니다.
>>> nums = [num for num in range(10)]
>>> print(nums)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
하지만 리스트가 많은 양의 데이터를 담고 있거나 리스트의 구조가 복잡할 경우에는 이런 식으로 출력하면 상당히 보기가 어려워지죠?
>>> rows = [[r * 10 + c for c in range(10)] for r in range(10)]
>>> print(rows)
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26, 27, 28, 29], [30, 31, 32, 33, 34, 35, 36, 37, 38, 39], [40, 41, 42, 43, 44, 45, 46, 47, 48, 49], [50, 51, 52, 53, 54, 55, 56, 57, 58, 59], [60, 61, 62, 63, 64, 65, 66, 67, 68, 69], [70, 71, 72, 73, 74, 75, 76, 77, 78, 79], [80, 81, 82, 83, 84, 85, 86, 87, 88, 89], [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]
이번 포스팅에서는 복잡한 리스트를 보기 좋게 출력하는 몇 가지 방법에 대해서 알아보겠습니다.
for 루프
for
문을 사용하여 루프를 돌면서 리스트의 각 원소를 여러 줄에 나누어서 출력해보겠습니다.
>>> for row in rows:
... print(row)
...
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39]
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69]
[70, 71, 72, 73, 74, 75, 76, 77, 78, 79]
[80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
어떤가요? 훨씬 보기게 수월해졌죠?
그런데 이 방법은 두 줄의 코드가 필요하고 들여쓰기도 해야하기 때문에 직접 사용을 해보면 은근히 귀찮을 때가 많더라고요.
pprint 모듈
파이썬에서는 print()
함수의 업그레이드 버전인 pprint()
함수를 제공하고 있는데요.
이 함수를 사용하면 좀 더 예쁘게 복잡한 데이터를 출력할 수 있습니다.
pprint()
함수를 사용하려면 먼저 pprint
모듈을 임포트해야합니다.
>>> from pprint import pprint
이제 pprint
함수를 이용해서 리스트를 출력해보면 위와 유사한 형태로 출력이 되는 것을 볼 수 있습니다.
>>> pprint(rows)
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
[70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
[80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]]
print 함수
마지막으로 제가 개인적으로 제일 많이 사용하는데 은근히 많이 알려지지 않은 방법을 소개해드릴게요.
바로, 파이썬의 *
연산자와 print()
함수의 sep
옵션을 이용하는 것인데요.
>>> print(*rows, sep='\n')
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
[30, 31, 32, 33, 34, 35, 36, 37, 38, 39]
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
[50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69]
[70, 71, 72, 73, 74, 75, 76, 77, 78, 79]
[80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
[90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
짜잔! 🎉 for
루프를 돌리거나 pprint
모듈을 임포트하지 않고도, 한 줄의 코드로 처리할 수 있어서 매우 편리하지 않나요?
간단히 원리를 설명드리면, 우선 배열 앞에 *
연산자를 붙여서 함수를 호출하면 마치 여러 개의 인자를 넘긴 효과가 납니다.
그리고 print()
함수에는 가변 길이의 인자를 넘길 수 있는데요.
기본적으로는 공백을 구분자로 사용합니다.
>>> print(1, 2, 3)
1 2 3
하지만 sep
옵션으로 이 구분자를 다른 문자로 바꿀 수가 있습니다.
>>> print(1, 2, 3, sep=',')
1,2,3
>>> print(1, 2, 3, sep='\n')
1
2
3
마치면서
이상으로 복잡한 리스트를 보기 좋게 출력하는 여러 가지 방법에 대해서 알아보았습니다. 간단한 디버깅하실 때 유용하게 사용하시길 바라겠습니다. 😄