문제 상황
- 문자열 string에서 원하는 인덱스의 문자를 바꾸고자 하는데 아래와 같은 에러 발생
string = 'Hello world'
string[1] = 'a'
Type: 'str' object does not support item assignment
원인
- 파이썬의 자료형 종류에는 수정 가능한 mutable 타입 (리스트, 딕셔너리 ..)이 있음
- 수정이 불가능한 객체인 immutable 타입 (튜플, 문자열 ..)이 있음
- 문자열은 immutable 자료형이라 인덱싱을 또는 슬라이싱을 통한 값의 변환이 불가
해결 방법
1. 문자열을 수동으로 할당
- 문자열을 이어 붙여 재할당 해주기
- 이 방법은 값을 수정할 때마다 문자열 길이 N에 대하여 시간 복잡도 O(N)이 소요
string = string[:2] + 'a' + string[3:]
2. 리스트로 변환하여 수정
- 여러번 수정이 필요할 경우, mutable 타입 객체 List로 변환하여 수정을 진행
- 이 때의 시간복잡도는 O(1) 이므로 훨씬 유리
string = list(string)
string[2] = 'a'
string = ''.join(string) # 리스트 -> 문자열로 재변환
728x90
'ssung_끄적끄적 > Python_끄적' 카테고리의 다른 글
Python _ 문자열을 리스트로, 리스트 두 개의 원소 값 바꾸기 (0) | 2024.03.29 |
---|---|
Python_enumerate() (1) | 2023.10.10 |
Python_title() & capitalize() (문자열에서 첫 번째 글자를 대문자로) (0) | 2023.09.19 |
Python_slicing (0) | 2023.09.14 |
Python_sort() & sorted() (0) | 2023.09.14 |