문자열 자료형
- 문자열 변수를 초기화 할 때는 큰따옴표(")나 작은따옴표(')를 이용한다.
- 문자열 안에 큰 따옴표나 작은 따옴표가 포함되어야 하는 경우 :
1. 전체 문자열을 " " 로 구성한 경우 : 작은 따옴표를 이스케이프 문자형태(백슬래시[\]) 없이 사용 가능, 큰 따옴표는 백슬래시(\)붙여서 가능
예) a = " '공자'가 말했다. \"문구\" "
2. 전체 문자열을 ' ' 로 구성한 경우 : 큰 따옴표를 이스케이프 문자형태(백슬래시[\]) 없이 사용 가능, 작은 따옴표는 백슬래시(\)붙여서 가능
예) a = ' \'맹자\'가 말했다. "문구" '
문자열 연산
- 문자열 변수에 뎃셈(+)을 이용하면 문자열이 더해져 연결(Concatenate)된다.
- 문자열 변수를 양의 정수와 곱하면 문자열이 여러번 더해진다.
- 문자열로 인덱싱과 슬라이싱을 할 수 있다.
- 특정 인덱스의 값을 변경할 수는 없다. -> 불변(Immutable) 속성
a = "hello"
b = "world"
print(a+b) # hello world 출력
print (a*3) # hellohellohello 출력
# 인덱싱
print(a[2:4]) # ll출력
# 인덱싱으로 값을 변경할 수 는 없음
a[2] = 'a' # TypeError발생
# 문자열 길이
len(a)
# 대, 소문자
a.upper() # 대문자
a.lower() # 소문자
a.swapcase() # 상호전환
a.isupper() <-> a.islower() # 구분
# join으로 리스트 문자열 연결
print("\n".join([a,a]))
# int형 의 경우 아래와 같이 str로 변환해줘도 괜찮을 듯 하다.
a = [1, 2, 3, 4]
print("".join(map(str, a)))
문자열 뒤집는 3가지 방법
- Slice
slicing 을 이용해 [start:stop:step] 간단히 문자열을 뒤집을 수 있다.
# apple[start:stop:step]
reversed_str = apple[::-1] # 반대로 출력
- For Loop
for문을 이용해 string 객체를 뒤집을 수 있다.
for i in string:
reversed_str = i + reversed_str
- Join Reverse
reversed() 메소드는 반대방향으로 순회하는 iterator 객체를 반환한다. join을 이용해 reverse된 해당 객체를 문자열 객체로 만들 수 있다.
string = 'Hello'
print(reversed(string))
<reversed object at 0x7f687c1b95b0> # console 반환 결과
reversed_str = "".join(reversed(string)) # olleH를 반환한다.
출처 : https://codechacha.com/ko/python-reverse-string/
문자열 Format
- 문자열의 정렬(문자열이 지정한 n개의 공간을 초과한다고 해서 잘리는 것은 아니며 삐뚤어 질 뿐임)
str.ljust(n, 'c') = 문자의 공간을 n만큼 부여하고 좌측부터 문자열를 채우고 남으면 공백은 c로 채운다.
str.center(n, 'c') = 문자의 공간을 n만큼 부여하고 가운데부터 문자열을 채우고 남으면 공백은 c로 채운다
str.rjust(n, 'c') = 문자의 공간을 n만큼 부여하고 좌측부터 문자열를 채우고 남으면 공백은 c로 채운다.
* 표를 예뻐 보이게 작성할 때 사용하면 좋음, 백준 9654, 2442에 응용 가능
문자열 찾기
- Find
str.find(문자, 시작 Index, 끝 Index)는 결과 값으로 찾는 문자의 index를 반환하며 결과가 없을 경우 -1을 반환한다. 중복의 경우 가장 가까운 index가 반환된다.
str = 'APPLEA'
print(str.find('A')) # 0 반환
print(str.find('A', 1)) # 5 반환
print(str.find('A', 1, 2)) # -1 반환
튜플 자료형
- 리스트와 유사하나 한번 선언된 값은 변경할 수 없음
- 소괄호()를 이용해 초기화
- 리스트에 비해 기능이 제한적이므로 상대적으로 공간 효율적(메모리 소비 적음)
a = (1, 2, 3, 4, 5, 6)
# 인덱싱은 리스트와 같음
print(a[3]) # 4 출력
# 그러나 값 변경은 불가
a[3] = 3 # TypeError 발생
튜플을 사용면 좋은 경우
- 서로 다른 성질의 데이터를 묶어서 관리할 때 : 최단 경로 알고리즘에서는 (비용, 노드 번호)의 형태로 자주 사용함
- 데이터의 나열을 해싱(Hashing)의 키 값으로 사용해야 할 때 : 튜플은 변경이 불가능 해 리스트와 다르게 키 값으로 사용될 수 있음
- 리스트보다 메모리를 효율적으로 사용해야 할 때
본 글은 나동빈 - 이코테 2021 강의 몰아보기를 토대로 작성한 정리입니다.
좋은 강의를 올려주신 나동빈님께 감사드립니다.
또한 코딩테스트 문제를 풀면서 필요한 부분들을 추가하고 있어 강의내용과 다를 수 있습니다!
'코딩테스트' 카테고리의 다른 글
이코테 6강 리뷰 (기본 입출력) (0) | 2022.05.17 |
---|---|
이코테 5강 리뷰 (사전, 집합 자료형) (0) | 2022.05.13 |
이코테 3강 리뷰 (리스트 자료형) (0) | 2022.05.12 |
이코테 2강 리뷰 (수 자료형과 연산) (0) | 2022.05.10 |