[Python] list, str 역순으로 변환하기, 슬라이싱(Slicing)

숭글·2023년 2월 28일
0

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]

docs<slicing>

profile
Hi!😁 I'm Soongle. Welcome to my Velog!!!

0개의 댓글