Python replace method with immutable object

TK·2021년 5월 20일
0

TIL

목록 보기
53/55
croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']

c_alphabet = input()

c_alphabet_list = list()
for c in croatia:
    while True:
        if c in c_alphabet:
            c_alphabet = c_alphabet.replace(c, '?', 1)
            
            c_alphabet_list.append(c)
        else:
            break

alphabets_without_croatia = c_alphabet.replace('?', '')
num = len(c_alphabet_list) + len(alphabets_without_croatia)
print(num)
  • 처음에 c_alphabet.replace 를 했을 때 c_alphabet 객체 자체의 변화가 있을 줄 알았는데 그렇지 않아서
  • c_alphabet = c_alphabet.replace(c, '?', 1) 처럼 같은 변수에 값을 다시 재할당 해주었다.
  • 왜냐면 string 자료형은 immutable 하다.
  • immutable 객체들은 값이 변경될 때 새로운 객체로 생성이 되기 때문에 변경이 일어날 때 기존 객체는 변하지 않는다.
  • 마찬가지로 string 자료형을 replace 로 변경하려고 하면, 새로운 메모리를 참조하는 객체가 새로 생성되며, 이를 새로운 변수에 다시 할당해주어야 한다.

immutable 한 객체들은 call by value 의 속성을 띄고 있다.

profile
Backend Developer

0개의 댓글