프로그래밍/Python

[Python]Slice 사용법

guitarhero 2017. 10. 23. 17:08
728x90

파이썬에서 list와 문자열은 비슷한 특징을 갖는데 

그중에서 많이쓰는 기능은 slice를 통해서 값을 자르거나 변경하거나 추가하는 것인데 간단하게 그 방법을 정리해 보려고한다.


>>> list(range(10)) #으로 실행하면 [0,1,2,3,4,5,6,7,8,9]의 리스트가 만들어 진다. 

>>> list[1:4]    #[1,2,3]을 반환한다.  첫번째 index포함 두번째 index전까지의 값을 가져온다. 

>>> list[0:len(list)]    #이렇게도 전체 리스트를 반환받을 수 있지만

>>> list[:]                #중간에 [:]콜론을 사용해도 전체 리스트를 받을 수 있다.

>>> list[:4]                #이렇게 사용하면 0~3번째 인덱스 값을 반환하고

>>> list[3:]                #이렇게 사용하면 3~끝 인덱스까지의 값을 반환한다. 


그리고 스텝(step)을 정해서 값을 가져올수 있는데 짝수 번째 값이라던지 3씩값을 더해서 가져올 수 있다. 


>>> list[2:9:2]        #이렇게 지정하면 마지막2가 step이 되어서 [2,4,6,8]이 반환되고

>>> list[::3]            #이렇게 하면 전체 리스트에서 3씩증가하며 값을 가져온다. [0, 3, 6, 9]

그리고 step은 양의 값만아니라 음의 값으로도 지정이 가능한데

>>> list[2:6:-2]        #이렇게 지정하면 [] 빈배열을 반납하는데 2번째 인덱스에서 -2 step으로는 6에 도달할 수 없기 때문이다. 그래서 

>>> list[6:2:-2]        #이렇게 하면 [6,4]가 리턴된다. 두번째 인덱스전까지 이기 때문에 2는 포함 되지 않는다 그래서 2를 포함하고 싶다면

>>> list[6:1:-2]        #이렇게 사용해야 한다. 이렇게 인덱스 관련 값을 가져올때는 이런 부분을 유의해서 사용하면 좋을 것 같다. 


그리고 이렇게 값을 가져오는 것 뿐만 아니라 변경도 가능한데


>>> list[2,4] = [22,33]    #이렇게 대입하면 [0,1,22,33,4,5,6,7,8,9]로 변경된다. 

물론 이렇게 뿐만아니라 더 많은 값이나 더 적은 수의 값도 대입이 가능하다. 

>>> list[2:6] = [33,44]    #[0,1,33,44,6,7,8,9]

>>> list[8:] = [88,99,10,11,12]    #[0,1,2,3,4,5,6,7,88,99,10,11,12]로 변경도 가능하다. 


그리고 이러한 리스트의 특징은  문자열에도 적용이 가능하니 각자 테스트하면서 정리하면 좋을 듯하다. 

728x90