Python/파이선과 친해지기

[Python] - Python과 친해지기-SLICING과 내장함수

Python이 제공하는 강력한 기능 중 하나인 SLICING, 자료구조를 압니다.라고 자신 있게 말한 사람이 SLICING도 모른다고 하면 그것도 참 웃긴 일이다.  Python을 Python 답게 해주는 또 다른 강력한 도구인 SLICING에 대해서 알아보고 자료구조와 어울리는 간단한 내장 함수 또한 알아보도록 하자

 


 

SLICING : 파이선에서 연속적인 객체들의 일부 범위를 선택해서 가져오는 방법

그렇다. 말그대로 자료구조 중 일부를 잘라(SLICE)해서 가져오는 방법이 SLICE이다.

우리를 도와줄 자료구조 my_array를 소개한다.

>> my_array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 
87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

그렇다 0~99를 가진 LIST이다.

 

SLICING은 3가지만 기억하면 된다. START, END, STEP

① start : 어디서부터 SLICE 할지를 지정하는 인덱스이다.

② end : 어디까지 SLICE할지를 지정하는 인덱스이다.

③ step : 보폭이다. start와 end사이를 얼마나 뛰어서 슬라이스 할지를 의미한다.

 

다음의 예시를 보면서 SLICE와 친숙해져 보도록 하자

>> print(my_array[0:50:2])
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48]

>> print(my_array[:30:4])
[0, 4, 8, 12, 16, 20, 24, 28]

>> print(my_array[3::10])
[3, 13, 23, 33, 43, 53, 63, 73, 83, 93]

>> print(my_array[:-50])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 
48, 49]

위에서 알 수 있는 SLICING의 규칙은 다음과 같다.

1. 값이 생략되면 start는 0, end는 인덱스의 끝, step은 1을 가진다.

2. 음수는 뒤에서부터 카운트한다.(따라서 배열의 가장 마지막은 -1의 인덱스, 2번째 마지막은 -2의 인덱스 가 된다. 꽤나 자주 사용하는 인덱스이니 알아두기를 바란다.)

 

내장 함수

내장 함수는 파이선에서 기본적으로 제공하는 함수들로 정말 많은 내장 함수들이 있지만, 특히 자료구조와 더욱 어우러 지는(어우러진다. 마치 오리엔탈 샐러드) 내장함수들이 많이 존재한다. 다음과 예시를 보도록 하자

>> my_array = [1,2,3,4,5,6]
>> my_dict = {1:"a",2:"b",3:"c"}
>> my_tuple = (1,2,3)

>> sum(my_array)
21
>> sum(my_dict)
6
>> sum(my_tuple)
6

>> len(my_array)
6
>> len(my_dict)
3
>> len(my_tuple)
3

>> max(my_array)
6
>> max(my_dict)
3
>> max(my_tuple)
3

>> min(my_array)
1
>> min(my_dict)
1
>> min(my_tuple)
1

위에 사용된 함수는 총 4가지가 있다. ① 합연산의 sum, ② 길이를 반환하는 len, ③ 최댓값을 반환하는 max, ④ 최솟값을 반환하는 min 이 4가지만 알아도 간단한 프로그램의 자료구조를 내장 함수 사용하는 데에는 어려움은 없을 것이다.

* dict은 list와의 강제 캐스팅 때에도 보았었지만 기본적인 연산을 적용하는 경우 보통 key를 기준으로 연산이 되는 것을 확인할 수 있다. dict.items()는 이때 사용되는 것이다. 자세한 것은 반복문에서 배우게 될 것이다.


이번 시간에는 간단하게 원하는 부분을 자르는 SLICING과 자료구조와 어우러지는 내장 함수를 몇 가지 살펴보았다. 이제 프로그래밍의 꽃인 반복과 제어 그중에서도 반복에 들어갈 준비가 된 것이다. 설마 벌써 흥미를 잃지는 않았기를 바라면서(필자는 여기서 흥미를 잃었었다.) 필자는 다음 강의에서 여러분을 기다리겠다.