로꾸거 로꾸거 로꾸거 말해말!!
문자열을 뒤집는 3가지 방법을 정리했습니다.
1. slice로 문자열 뒤집기
먼저 slice에 대해 잠시 정리하자면,
문자열/list[시작 인덱스:끝 인덱스(포함X): step]
- 시작 인덱스 또는 끝 인덱스 또는 step을 넣지 않는다면, 전체를 뜻합니다.
num = [1,2,3,4,5]
print(num[::]) # [1,2,3,4,5] / 전체를 뜻함
print(num[2::] # [3,4,5] / index 2부터 끝까지를 뜻함
# step의 의미 => 증가폭을 뜻합니다.
num = [1,2,3,4,5,6,7,8,9,10]
num[1::2] # index 1번째부터 끝까지 2씩 증가하며 slice를 한다는 뜻
print(num[1::2]) # [2, 4, 6, 8, 10]
- -index는 끝 인덱스부터 차례대로 -1 -2 -3 ... 인덱스 값을 뜻합니다.
- 전체 길이를 알 수 없을때 용이나게 쓰입니다.
num = [1, 2, 3, 4, 5]
num[-1] # 마지막 요소인 5를 뜻함
print(num[-1]) # 5
num[1:-1] # index 1번째 부터 index -2번째 까지를 뜻함.
print(num[1:-1]) # [2, 3, 4]
# -step 이해하기 => 요소를 뒤에서부터 감소폭만큼 감소하면서 요소를 가져옴
num[::-2] # 끝 인덱스부터 -2만큼 증가하여 slice함 => 거꾸로 2칸씩!
print([::-2]) # [5, 3, 1]
num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
num[2:-2] # index 2인 3부터 index -3인 8까지 slice
print(num[2:-2]) # [3, 4, 5, 6, 7, 8]
num[2:-2:-2] # 끝 인덱스인 -2는 양수로 고치면 index 8이고 시작 인덱스보다 끝 인덱스가 크기때문에 -2만큼 거꾸로 감소할 수 있는 범위가 없다. 그러므로 빈 객체!
print(num[2:-2:-2]) # []
num[-2:2:-2] # 시작 인덱스가 끝 인덱스보다 뒤에 있으므로 요소를 뒤에서부터 감소폭 만큼 감소할 수 있다. 거꾸로 2칸씩 건너뛰면서 요소를 가져온다.
print(num[-2:2:-2]) # [9, 7, 5]
- 🕵 주의
- num[1:-1]일때 끝 인덱스는 포함하지 않기 때문에 -2 index까지입니다!
- num[::-1] 일 땐 전체 리스트나 문자열을 뒤집어 -1만큼 감소하면서 요소를 가져옵니다
# slice 이용하기[::-1]
str = "로꾸거로꾸거로꾸거말해말"
print(str[::-1]) # 말해말거꾸로거꾸로거꾸로
2. reversed 이용하기
# reversed 이용하기
print(reversed(str)) # <reversed object at 0x0000026F8AFFC5B0>
print(''.join(reversed(str))) # 말해말거꾸로거꾸로거꾸로
- reversed는 객체로 반환하기 때문에 join을 이용해 문자열로 형변환 시켜줘야 합니다.
3. for문 이용하기
# for 이용하기
result_str = ""
for char in str:
result_str = char + result_str
print(result_str) # 말해말거꾸로거꾸로거꾸로
- 첫 번째 순회
- for char = '로' in '로꾸거로꾸거로꾸거말해말' :
- result_str = '로' + ''
- 두 번째 순회
- for char = '꾸' in '로꾸거로꾸거로꾸거말해말' :
- result_str = '꾸' + "로
- 세 번째 순회
- for char = '거' in '로꾸거로꾸거로꾸거말해말' :
- result_str = '거' + "꾸로"
- 마지막 순회
- for char = '말' in '로꾸거로꾸거로꾸거말해말' :
- result_str = '말' + "해말거꾸로거꾸로거꾸로"
- 사진 (출처 : #주간아이돌 | 네이버 TV)
'개발언어 > python' 카테고리의 다른 글
[python/파이썬] 리스트 요소 회전하는 4가지 방법 - 음수인덱스/문자열슬라이싱/%모듈/deque (0) | 2023.02.01 |
---|---|
comprehension (0) | 2023.01.14 |
가장 많이 쓰이는 print 공식문서로 톺아보기 (0) | 2023.01.04 |
for문 - range / enumerate() / 반복문 제어 (0) | 2023.01.03 |
if문 - if문/ 복수 if문 / 이중 if문 (2) | 2023.01.03 |
댓글