alswo5419   3년 전

파이썬 리스트 a = [1, 2, 3, 4]를 print(a)랑 print(*a)랑 왜 다르게 출력을 하는지 궁금합니다

print(a)는 [1, 2, 3] 출력하고

print(*a)는 1 2 3 이렇게 출력합니다

가르쳐 주세요 ㅠㅠ

snapflip20   3년 전

print(*a)에서 *(asterisk)는 a라는 리스트를 언패킹하는 역할을 합니다.

언패킹은 쉽게 말해서 여러 개의 데이터가 묶여 있는 어떤 자료형을 풀어내는 과정이라고 할 수 있습니다.

그래서 리스트뿐만 아니라 튜플, 집합도 언패킹이 가능합니다.

리스트 a = [1, 2, 3]가 있을 때,

x, y, z = a 를 실행하면 변수 x, y, z에는 1, 2, 3이 저장되어 있을 것입니다.

이를 '리스트 a를 언패킹하여 x, y, z에 저장한다'라고 표현할 수 있습니다.

따라서,

print(a)는 a라는 리스트 그 자체를 출력하지만

print(*a)는 리스트 a를 언패킹하여 a에 있는 모든 원소들을 출력하게 됩니다.

이때 각각의 원소들은 공백을 기준으로 분리되어 출력되는데, sep = 을 추가하여 구분 기준을 변경할 수 있습니다.

응용 예시

print(*a, sep = ',')는 a의 모든 원소를 기호 ','로 구분하여 출력

print(*a[1:])는 a의 첫 번째 원소부터 마지막 원소까지 공백으로 구분하여 출력

print(*a[::-1])는 a의 모든 원소를 거꾸로 출력

댓글을 작성하려면 로그인해야 합니다.