본문 바로가기

Money or Tech

python list unpacking

A = [[1,2,3,4,5], [2,3,3,4,5],[3,4,3,4,5],[1,1,1,1,1]]

이런 4행 1열의 리스트가 있다고 생각해 보자.

B = np.array(A)

로 2차원 행열이라고 생각하는것dl 좀 더 맞으니 4행 5열의 배열이 될것이다.

리스트에는 shape 이라는 함수가 없기 때문에, 리스트의 길이를 구하려면 

print(len(A))

--> 4

배열의 모양을 보고 싶으면

print(B.shape)

[[1 2 3 4 5]
 [2 3 3 4 5]
 [3 4 3 4 5]
 [1 1 1 1 1]]

이렇게 확인 할 수 있다.


자 여기서 고민이 하나 생겼는데,

2행과 3행만 뽑아서 무언가를 하고 싶으면 어떻게해야 하나?

이렇게 하면?

가장 쉽게 할수 있는것은 인덱싱/슬라이싱 이라는 개념이다.

print(A[1], A[2])

-->[2, 3, 3, 4, 5] [3, 4, 3, 4, 5]

근데, 2,3,4,5,6,7,8,9,...... 99 행까지 뽑으려면,

A[1], A[2], ,,,,, A[100] 이렇게 해야하는데 이건 좀 아니지 않나 싶을때 

list unpacking 이라는 것을 사용할 수 있다.

C = A[1:3]
print(C)
print(*C)

--> [[2, 3, 3, 4, 5], [3, 4, 3, 4, 5]]
--> [2, 3, 3, 4, 5] [3, 4, 3, 4, 5] 

저 C앞에 * 이 기호가 값만 넣어 줘! 라는 뜻이다.

생각보다 많이 쓰이니 왠만하면 자꾸 써버릇 해보자. 세살 버릇이 실력이라고 하드라.

ref. 파이썬 코딩도장

그 막막한 마음 너무나 잘 압니다 질문 환영합니다.

답변은 좀 늦을수있으니 양해바랍니다.