list나 str처럼 순서가 있는 타입(sequence object)을 역순으로 변환하려면!
s = "hi!! I'm good."
n = [0, 1, 2, 3, 4, 5, 6]
print(s[::-1])
print(n[::-1])
output >
.doog m'I !!ih
[6, 5, 4, 3, 2, 1, 0]
위 처럼 하면된다!
이렇게 간단하게 되는 이유는 python에서 slicing을 제공해주기 때문이다!
proper_slice ::= [lower_bound] ":" [upper_bound] [ ":" [stride] ]
lower_bound ::= expression
upper_bound ::= expression
stride ::= expression
공식문서에 가면 적혀있는 문법이다.
slicing을 하려면 가운데 ":"문자가 있어야하고 선택적으로 lower_bound와 upper_bound가 있어야한다.
s[:] -> 처음부터 끝까지
s[1:] -> 인덱스 1부터 끝까지
s[:8] -> 처음부터 인덱스 7(8 - 1)까지
오브젝트를 부분으로 잘라낼 때 사용하는 slicing이다.
문법을 보면 선택적으로 ":"하나를 더 추가해서 사용할 수 있는데, 그게 위에서 활용한 방법이다!
stride라고 되어있고 step이라 생각하면 된다.
lower_bound : start
upper_bound : end
stride : step
range()랑 비슷하다!
stride(step)이 음수일 경우에는 역순이 된다.
그래서 위같은 코드로 리스트를 역순으로 변환할 수 있었던 것이다.
그럼 짝수 인덱스만 골라내려면 어떻게 해야할까??
ta-da
s = "hi!! I'm good."
n = [0, 1, 2, 3, 4, 5, 6]
print(s[::-1])
print(n[::2]) #짝수만!
output >
.doog m'I !!ih
[0, 2, 4, 6]