ssung_끄적끄적/Python_끄적

Python_TypError :'str' object does not support item assignment

ssungcohol 2024. 3. 24. 14:43

문제 상황

 - 문자열 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