본문 바로가기

컴퓨터 프로그래밍

python 리스트 슬라이싱

반응형

프로그램을 하다보니 기본이 안되어있는게 뼈져리게 느껴져서 공부하면서 작성해본다. 

 

python에서는 슬라이싱이라는 c언어와는 다른 기능을 제공한다. 

이런 편리한 기능을 이용해서 편리하게 코딩이 가능하다. 

보면 그냥 단수하게 이해하고 넘어갈 수 있는 부분이지만 막상 구현하려고 하면 잘 안된다. 

따라서 연습을 해보자

그리고 1차원 리스트외 2차원 리스트에 대해서도 슬라이싱을 연습해 볼 생각이다. 

 

리스트의 슬라이싱 기본형태는 다음과 같다. 

List[Start : End : Step]

각각 시작지점, 끝지점, 몇개씩 끊어서 가져올지 정함

a = [1, 2, 3, 4, 5]
print(a[1:])
print(a[:2])
print(a[1:4])

의 결과는 다음과 같다.

슬라이싱 결과

 

1차원 리스트 슬라이싱은 간단하게 알아보았고, 이제 가장 필요한 2차원 리스트에 대한 인덱스와 슬라이싱을 알아보겠다.

a = [[1, 2, 3, 4 ], [5, 6, 7, 8], [9, 10, 11, 12]]

마찬가지로 3x4리스트를 만들고 테스트를 진행해 보았다. 

먼저 인덱싱과 슬라이싱의 차이입니다. 

인덱싱 슬라이싱 차이

 차이가 모이시나요?

인덱싱은 1차원 리스트로 나온 반면

슬라이싱은 2차원 리스트로 나왔습니다. 

a[0] 는 3x4 (행, 열)이고, 인덱스 값에 숫자 하나만 들어갔으므로 첫번째 행을 의미하는 것이고, 

리스트 안의 리스트 개념으로 [1234] [5678] ... 이 들어갔고, a[0]는 a리스트 안에 들어있는 [1234]리스트(원소)를 가르키므로 [1234]가 출력되는것이다. 

반면 슬라이싱의 경우 2차원 리스트를 슬라이싱을 통해 가져오므로 그대로 2차원 리스트인 것이다. 

1차원 리스트때를 생각해보면 a[0]은 원소의 결과 1이 나오지만 (숫자), a[0:1]은 리스트가 나온다 [1]

다음은 2차원 리스트 에서 자유롭게 슬라이싱 하는것을 확인해보겠다. 

동일한 a리스트에서 작업해보겠다.

a[0, 0:2]

a[0:2, 0]

a[0:2, 0:2] 에 대한 값을 확인해보겠다. 

결과는 다음과 같습니다.

반응형