[파이썬] 개념정리/[파이썬] 구문,문법정리
[Python] list와 str의 슬라이싱(Slicing)
숨겨진 오징어
2020. 7. 10. 00:34
[Python] list와 str의 슬라이싱(Slicing)
1. 리스트의 슬라이싱 (start, end, step)
- 리스트 슬라이싱을 이제껏 자주 활용해왔지만, 그동안 몰랐던 step(stride) 인자를 알게되어 정리한다.
list(start,end,step)
위와 같이 리스트의 슬라이싱을 표기할 수 있으며, 각 3가지 인자를 설명하자면 다음과 같다
- start : 슬라이싱을 시작하는 위치
- end : 슬라이싱을 끝내는 위치 (주의할 점 : end로 지정한 인덱스는 제외하고 그 앞까지 인덱싱)
- step : stride라고도 부르며, 간격을 몇으로 두어 슬라이싱해올지를 결정한다. (정말 유용하게 사용가능할 듯하다.)
- step 역시 음수의 값을 가질 수 있는데, 양수값을 입력받았을 때 오른쪽으로 간격을 두면서 슬라이싱하는 것이라면 음수값을 입력받았을 때에는 왼쪽으로 간격을 두면서 슬라이싱하는 것이다.
1.1. step = 1 (default)
Input:
mylist = ['A','B','C','D','E','F','G','H','I','J','K','L']
mylist[1:10:1] #mylist[1:4]과 같은 결과, step=1(default)
Output:
['B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
- 인덱스1번부터 인덱스9번(10번의 이전)까지 간격을 1씩 두며 슬라이싱하였다.
1.2. step = 2
Input:
mylist[1:10:2]
Output:
['B', 'D', 'F', 'H', 'J']
- 인덱스1번부터 인덱스9번(10번의 이전)까지 간격을 2씩 두며 슬라이싱하였다.
1.3. step = -1
Input:
mylist[10:1:-1]
Output:
['K', 'J', 'I', 'H', 'G', 'F', 'E', 'D', 'C']
- step = -1로 두는 것은 위의 예제와는 달리 반대방향인 오른쪽부터 간격을 두며 왼쪽으로 슬라이싱하는 것이므로, 위의 예제와는 달리 10 → 1까지 방향을 설정하여 반대로 인덱싱한 것을 볼 수 있다.
- 인덱스10번부터 인덱스2번(순서로 보았을 때 역시 1번의 이전)까지 왼쪽으로 간격을 1씩 두며 슬라이싱하였다.
1.4. Palindrome (str형태)
- 사실, Palindrome은 문자(str)형태가 다음의 예와 같이 순서를 거꾸로 하여도 똑같은 형태를 말한다.
- 문자형태(str) 역시 위에서 이해한 list의 슬라이싱과 똑같이 슬라이싱을 적용할 수 있다.
ex1) saas ↔ saas
ex2) paap ↔ paap
ex3) KAYAK ↔ KAYAK
ex4) REVIVER ↔ REVIVER
ex5) ROTATOR ↔ ROTATOR
Input:
def rec_palindrome(s):
return s == s[::-1]
s1 = "saas"
s2 = "paap"
s3 = "KAYAK"
s4 = "REVIVER"
s5 = "ROTATOR"
s6 = "APC"
s7 = "marni"
print(rec_palindrome(s1))
print(rec_palindrome(s2))
print(rec_palindrome(s3))
print(rec_palindrome(s4))
print(rec_palindrome(s5))
print(rec_palindrome(s6))
print(rec_palindrome(s7))
Output:
True
True
True
True
True
False
False
- 위와 같이 슬라이싱(step=-1)을 이용하면 간단히 palindrome인지 판별할 수 있는 함수를 생성할 수 있다.