Programming/Python

[Python 3.7] 파이썬 인덱스와 슬라이스 (1)

Nirsa 2020. 1. 12. 17:00
반응형

 

1. 시퀀스 객체의 인덱스(index)

1) 양수 인덱스 지정

시퀀스 객체의 각 요소에는 순서가 있는데, 이 순서를 인덱스라고 부르며 우선 리스트를 생성한 후 인덱스를 사용해 요소를 출력해 봅시다.

* 인덱스 사용 방법 : 시퀀스객체[인덱스]

요소는 5개인데, 인덱스 4가 값이 50인 요소를 출력 해왔습니다. 인덱스는 0부터 시작하기 때문에 시퀀스 객체에 있는 요소의 개수보다 1개가 적습니다.

  • 요소의 개수 : 1개, 2개, 3개, 4개 …
  • 인덱스 : 0, 1, 2, 3 …

 

위의 이미지를 보면 시퀀스 객체에 1, 2, 3, 4, 5라는 각각의 요소들이 있고. 각각의 요소를 a[0]와 같이 인덱스를 표시 해두었습니다. 1편에서 인덱스, 튜플, range, 문자열 모두 시퀀스 객체라고 설명 하였는데, 시퀀스 객체들은 모두 인덱스로 접근할 수 있으며 방식은 같습니다.

 

2) 음수 인덱스 지정

인덱스는 음수로도 지정할 수 있습니다.

a[0] , a[1] 과 같이 사용할 때에는 앞(왼쪽)에서부터 요소에 접근을 하였다면 음수는 뒤(오른쪽)에서부터 요소에 접근하게 됩니다. [0]은 가장 앞에 있는 첫번째 요소를 접근하고, [-1]은 가장 뒤에있는 첫번째 요소에 접근 합니다.

 

2. 인덱스를 활용하여 요소에 값 할당 및 삭제

1) 리스트의 원하는 요소에 값 할당

인덱스를 활용하여 리스트의 원하는 요소에 값을 할당하거나, 삭제를 할 수 있습니다.

* 튜플, range, 문자열은 읽이 전용인 시퀀스 자료형이기 때문에 할당, 삭제할 수 없습니다.

어디서 많이 본것같죠? 변수를 할당하는 방식과 같습니다. 변수 할당과 다른점은 리스트의 인덱스를 적어준다는 점 입니다. '리스트 a의 0번째 인덱스에 있는 요소(값1)를 10으로 할당 하겠다.' 라는 뜻 입니다.

 

2) 리스트의 원하는 요소에 값 삭제

리스트의 원하는 요소에 값을 할당하는건 변수 선언하는것과 같았습니다.

삭제도 마찬가지로 변수를 삭제하는 방식과 큰 차이가 없고 다른점은 인덱스를 표현한다는 것 뿐 입니다. (변수 삭제와 마찬가지로 del을 사용 합니다)

리스트에서 첫번째 요소(인덱스 0)를 삭제하니 1이 삭제 되었습니다.

삭제할때 주의하여야 할 점이 있는데, 바로 요소를 삭제하면서 인덱스가 변경되는 경우 입니다.

1~5가 들어있는 시퀀스 객체의 0번째 인덱스(값1)를 삭제하니 뒤에 있던 요소들의 인덱스가 모두 앞당겨졌습니다.

 

3. 슬라이스(slice)란?

인덱스로 요소에 접근할때는 하나씩만 접근이 되었습니다. 슬라이스는 인덱스를 사용하여 범위를 정한 후 시퀀스 객체의 요소에 접근 합니다.

* 슬라이스 사용 방법 : 시퀀스객체[시작인덱스:끝인덱스]

문법에 익숙해지기 위해 [1, 2, 3, 4] 처럼 직접 적어 주기보다는 list, range 를 사용하였습니다. range 를 이용하여 0부터 100까지 10씩 건너 뛰어 숫자를 생산하고, list 로 묶어주어 리스트로 할당 되었습니다.

a[0:5] 를 사용하여 리스트 a의 인덱스 0부터 인덱스 5까지를 출력 하였는데, 왜 인덱스 0부터 4까지만 (a[0], a[1], a[2], a[3], a[4]) 출력 되었을까요?

슬라이스를 사용할 때 끝 인덱스에 작성한 숫자에서 -1 을 하시면 됩니다. a[0:10] 을 쓰면 a[0] ~ a[9] 까지 요소에 접근하는거고, a[3:8] 을 쓰면 a[3] ~ a[7] 까지 접근하게 됩니다.

슬라이스로 요소에 접근할때는 끝 인덱스 -1 까지만 접근 한다는 점을 주의하여 주시고, 마찬가지로 a[3:6], a[2:9] 와 같이 시퀀스 객체의 중간 요소에도 접근할 수 있습니다.

 

슬라이스는 정리할 내용이 많아 글을 나눠서 업로드 하겠습니다.

반응형