본문 바로가기
IT/파이썬 기초 (Python)

#027 파이썬 기초 - 자료구조 4편 (Python Data Structure Part 4)

by DoitSQL 2023. 3. 9.
728x90

Python기초강의강좌, 파이썬기초강의강좌, 참조(Reference), 문자열 메서드, Python String Methods

#027 파이썬 기초 - 자료구조 4편 (Python Data Structure Part 4)   

Python Data Structure Part 4

지난 시간에 이어서 자료구조 학습 계속합니다. 참조(Reference)에 대한 내용과 문자열의 메서드에 대해서 알아보겠습니다.


참조(Reference)

객체를 생성하고 변수에 할당해 줄 때, 사실 실제 객체가 변수에 할당되는 것은 아닙니다! 변수에는 객체의 참조 가 할당됩니다. 참조란, 그 변수의 이름이 여러분의 컴퓨터 메모리 어딘가에 저장되어 있는 실제 객체의 위치를 가리키는 것을 말합니다. 이를 객체에 이름을 바인딩한다고 말합니다. 파이썬을 객체지향 언어라고 하는 이유가 여기 있습니다.

 

일반적으로는 이에 대해 크게 신경 쓸 필요가 없습니다만, 참조로 인해 발생하는 몇 가지 현상에 대해 알고 계실 필요가 있습니다.

 

예제 ( ds_reference.py로 저장하세요):   

# Filename : ds_reference.py
print('Simple Assignment')
shoplist = ['apple', 'mango', 'carrot', 'banana']

# mylist는 같은 object 가르키는 다른 이름일 뿐이다!
mylist = shoplist

# 첫번째 apple을 목록에서 제거합니다.
del shoplist[0]
print('shoplist is', shoplist)
print('mylist is', mylist)
# shoplist와 mylist를 출력하면
# apple이 없는 동일한 목록을 출력합니다.
# 이 둘은 동일한 object를 참조하기 때문입니다.

print('Copy by making a full slice')
# mylist에 full slice로 카피합니다.
mylist = shoplist[:]
# 첫번째 item을 삭제합니다.
del mylist[0]

print('shoplist is', shoplist)
print('mylist is', mylist)
# 이제 두 목록이 다릅니다.
# shoplist에서만 mango가 삭제되었습니다.

▶ 실행 결과 :

C:\Anaconda\envs\study_39\python.exe E:\python_study\ds_reference.py
Simple Assignment
shoplist is ['mango', 'carrot', 'banana']
mylist is ['mango', 'carrot', 'banana']
Copy by making a full slice
shoplist is ['mango', 'carrot', 'banana']
mylist is ['carrot', 'banana']

▶ 동작 원리 :

주석에 거의 모든 설명을 달아 두었습니다. 리스트와 같은 어떤 열거형이나 복잡한 객체 (정수형과 같이 단순 객체를 제외하고)의 복사본을 생성하고 싶을 때에는, 슬라이스 연산자를 이용하여 복사본을 생성해야 합니다. 단순히 한 변수를 다른 변수에 할당하게 되면 두 변수는 같은 객체를 "참조"하게 되며 실제 복사본이 생성되지 않습니다. 따라서 이것을 조심하지 않으면 문제가 발생할 수 있습니다. 꼭 기억하세요!

 

이미 존재하는 리스트를 다른 변수에 할당하는 구문은 복사본을 만드는 것이 아닙니다. 열거형의 복사본을 만들려면 반드시 슬라이스 연산자를 사용하시기 바랍니다.


문자열에 대한 좀 더 자세한 설명    

앞서 문자열에 대해 이미 상세히 다루었지만, 몇 가지 더 알아두면 좋을 것들이 있습니다. 문자열도 객체이므로 여러 메서드를 가지고 있는데 이를 통해 문자열의 앞 뒤 공백을 제거한다거나 하는 일들을 할 수 있습니다!

 

파이썬에서 사용되는 모든 문자열은 str 클래스의 객체입니다. 다음 예제에 이 객체가 제공하는 몇 가지 유용한 메서드들의 용례가 나타나 있습니다. str 클래스의 모든 메서드의 목록을 확인하시려면 help(str)을 실행해 보시기 바랍니다.

 

예제 ( ds_str_methods.py로 저장하세요):

# This is a string object
name = 'Swaroop'

if name.startswith('Swa'):
    print('Yes, the string starts with "Swa"')

if 'a' in name:
    print('Yes, it contains the string "a"')

if name.find('war') != -1:
    print('Yes, it contains the string "war"')

delimiter = '_*_'
mylist = ['Brazil', 'Russia', 'India', 'China']
print(delimiter.join(mylist))

▶ 실행 결과 :

C:\Anaconda\envs\study_39\python.exe E:\python_study\ds_str_methods.py
Yes, the string starts with "Swa"
Yes, it contains the string "a"
Yes, it contains the string "war"
Brazil_*_Russia_*_India_*_China

▶ 동작 원리 :

여기서는 문자열이 제공하는 여러 메서드에 대해 알아보았습니다. startswith 메서드는 문자열이 주어진 문자열로 시작하는지 여부를 반환합니다. in 연산자는 문자열에 주어진 문자열이 포함되어 있는지 확인하는 데 사용합니다.

 

find 메서드는 문자열 내에 포함된 특정 문자열의 위치를 반환합니다. 이때 주어진 문자열을 찾지 못한 경우 find는 -1을 반환합니다. 또 str 클래스는 join이라는 좋은 메서드를 가지고 있는데, 이것은 주어진 문자열들을 해당 문자열을 구분자로 하여 결합한 하나의 큰 문자열을 만들어 반환해 주는 메서드입니다.

 

Python String Methods

문자열을 핸들링하는 다양한 메서드가 있습니다. 많은 메서드를 다 외우기는 힘듭니다. 필요할 때 구글링 하시면서 찾아보고 적용하면 됩니다.

더 많은 메서드를 확인해 보시려면 파이썬 매뉴얼을 참조하시거나 아래의 사이트를 참조하세요. 목록에서 누르고 들어가면 예제까지 확인할 수 있습니다.

https://www.w3schools.com/python/python_ref_string.asp

 

Python String Methods

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com


자료구조 요약   

파이썬의 여러 내장 자료구조들에 대해 상세히 알아보았습니다. 이 자료 구조들은 프로그램을 짧고 보기 쉽게 작성하는데 꼭 필요한 구성 요소들입니다.

 

이제 여러분은 파이썬의 여러 기본적인 문법에 익숙해졌을 것입니다. 다음 시간부터는 실제 파이썬 프로그램을 설계하고 작성해 보도록 하겠습니다.

 

감사합니다.

 

Do it! SQL을 찾아 주셔서 감사합니다. ♥ 댓글이 큰 힘이 됩니다.

 

728x90

댓글