Colab Python Day2_2

ITselfhiam
|2023. 9. 1. 16:13

10. 문자열 다루기
10-1. 문자열이란?
파이썬에서 문자열은 텍스트 데이터를 다루는 데 사용되는 중요한 데이터 타입입니다. 
문자열은 작은 따옴표(')나 큰 따옴표("), 세 개의 따옴표(''', """)로 둘러싸인 텍스트로 표현됩니다.

입력
str1 = '오늘도 즐거운 파이썬 수업'
print(str1)
str2 = '오늘도 즐거운 파이썬 수업'
print(str2)
str3 = '''류지 :
오늘도 즐거운 파이썬
수업'''
print(str3)

출력
오늘도 즐거운 파이썬 수업
오늘도 즐거운 파이썬 수업
류지 :
오늘도 즐거운 파이썬
수업

파이썬의 문자열은 유니코드(Unicode) 문자의 시퀀스로 구성되며, 문자열 값은 메모리에 저장되고 해당 값은 불변(immutable)한 특성을 가집니다. 파이썬은 문자열 리터럴의 공유 문자열 최적화와 같은 기술을 사용하여 문자열을 메모리 효율적으로 다루도록 설계되었습니다.

 

1. 문자열 리터럴과 메모리 할당 : 파이썬에서 문자열 리터럴(값)을 생성하면, 이러한 값은 메모리에 저장됩니다.

 예를 들어 "Hello, world!"라는 문자열을 생성하면 해당 문자열 값이 메모리에 저장되고, 

변수에 할당할 때는 해당 값의 참조(reference)가 변수에 저장됩니다.

 

2. 공유 문자열 (String Interning) : 작은 크기의 문자열 리터럴은 '공유 문자열'이라는 메모리 최적화 기술을 활용합니다.

동일한 문자열 값이 여러 변수에 할당되면, 파이썬은 메모리에 단일로 문자열을 저장하고 여러 변수가 해당 값을 참조하게 합니다.

이로써 메모리 사용을 줄일 수 있습니다.

 

입력

a = 'Hello'
b = 'Hello'

print(a is b) #is는 2개의 변수를 비교할때 사용하는 비교연산자이다. 결과값 = True, False

출력

True

is연산자는 파이썬에서 두 객체의 식별(Identity)을 비교할 때 사용되는 연산자입니다. 객체의 식별은 메모리 내에서 객체가 저장된 위치를 의미합니다.is 연산자는 두 객체가 동일한 메모리 위치에 저장되어 있는지 여부를 판단합니다.

 

3. 문자열 연결과 재할당: 문자열은 불변한 데이터 타입이므로 문자열 연결(+ 연산자)이나 문자열 재할당 시 새로운 문자열 객체가 생성됩니다. 이전 문자열은 변경되지 않습니다.

 

※ 문자열 재할당

파이썬에서 문자열은 불변(immutable)한 데이터 타입이므로 같은 변수에 문자열을 재할당하는 경우, 새로운 문자열 객체가 생성되고 변수는 새로운 문자열 객체를 참조하게 됩니다. 이전 문자열 객체는 변경되지 않습니다.

 

입력

text= 'Hello'
print(id(text))

text = 'Python'
print(id(text))

출력

135360498713456

135360926479280

 

id() 함수는 객체의 고유한 메모리 주소를 반환합니다.

 

※ 가비지 컬렉션

파이썬은 메모리 관리를 위해 참조 카운팅(reference counting) 메커니즘을 사용합니다. 이 메커니즘은 객체가 얼마나 많은 변수에 의해 참조되고 있는지를 추적합니다. 객체의 참조 카운트가 0이 되면 해당 객체는 더 이상 사용되지 않으며, 가비지 컬렉션(garbage collection)에 의해 메모리에서 해제됩니다.

따라서 이전 문자열 객체에 더 이상 어떠한 변수도 참조하지 않을 때, 해당 문자열 객체는 참조 카운트가 0이 되며 가비지 컬렉션의 대상이 됩니다. 가비지 컬렉션은 주기적으로 실행되며 더 이상 사용되지 않는 객체를 메모리에서 해제하여 자동으로 메모리를 관리합니다.

3. 문자열 함수와 연산자

1. 문자열 길이 확인하기 (len()): 문자열의 길이를 반환합니다.

입력

# len() : 문자열의 길이를 반환

출력

14

 

2. 문자열 합치기 (+): 두 문자열을 합쳐 새로운 문자열을 생성합니다.

입력

#문자열 합치기(+) : 두 문자열을 합쳐 새로운 문자열을 생성
name = '김사과'
age = '20살'
message = name + '. ' + age

print(message)

출력

김사과. 20살

 

3. 문자열 반복하기 (*): 문자열을 여러 번 반복하여 새로운 문자열을 생성합니다.

입력

# 문자열 반복하기(*) : 문자열을 여러 번 반복하여 새로운 문자열을 생성
apple = '🍎' * 10
print(apple)

출력

🍎🍎🍎🍎🍎🍎🍎🍎🍎🍎

 

4. 문자열 인덱싱과 슬라이싱: 문자열 내부의 문자에 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.

입력

# 문자열 인덱싱과 슬라이싱 : 문자열 내부의 문자의 인덱스를 사용하여 접근하거나 슬라이스할 수 있습니다.
str1 = '문자열 내부의 문자의 인덱스를 사용하여 접근하거나 슬라이스할 수 있음'
print(str1)

# 인덱싱
print(str1[0])
print(str1[1])
print(str1[12])
print(str1[-1])
print(str1[-2])

출력

문자열 내부의 문자의 인덱스를 사용하여 접근하거나 슬라이스할 수 있음

 

입력

str1 = '문자열 내부의 문자의 인덱스를 사용하여 접근하거나 슬라이스할 수 있음'
print(str1)

# 슬라이싱
print(str1[0:6])
print(str1[8:16])
print(str1[:16])
print(str1[8:])
print(str1[:]) # 전체 출력

출력

문자열 내부의 문자의 인덱스를 사용하여 접근하거나 슬라이스할 수 있음

문자열 내부

문자의 인덱스를

문자열 내부의 문자의 인덱스를

문자의 인덱스를 사용하여 접근하거나 슬라이스할 수 있음

문자열 내부의 문자의 인덱스를 사용하여 접근하거나 슬라이스할 수 있음

 

이렇게 된다.

'Study > GoogleColab' 카테고리의 다른 글

Colab Python Day3_2  (0) 2023.09.04
Colab Python Day3_1  (0) 2023.09.04
Colab Python Day2_1  (0) 2023.09.01
Colab Python Day1_2  (0) 2023.08.31
Colab Python 사용방법 및 단축키  (0) 2023.08.31