4. 문자열 메소드
문자열 메소드는 문자열 객체에 적용되는 함수로, 문자열을 조작하거나 변환하는 다양한 작업을 수행할 수 있게 해줍니다.
# .Upper() = 모든 문자를 대문자로 변환
# .lower() = 모든 문자를 소문자로 변환
text = 'Hello. Python!'
print(text.upper())
print(text.lower())
HELLO. PYTHON!
hello. python!
# .count() = ()안에 원하는 문자의 갯수를 세어주는 기능
text = 'Hello. Python!'
print(text.count('l'))
print(text.count('ll'))
2
1
# .find() = index의 기반으로 ''안에 있는 문장의 순서를 알려준다. (index는 0부터 count시작)
text = 'Hello. Python!'
print(text.find('l'))
print(text.find('ll'))
print(text.find('z')) #찾는 문자열이 없을때 -1을 반환
print(text.rfind('l')) # 오른쪽부터 찾아줘서 rfind로 적는다. (right find = rfind)
print(text.find('o', 5)) #index 5번 이후부터 영어 o를 찾아줘라
2
2
-1
3
11
# .replace() = 문자열 대체 ('바꿀대상', '바꿀내용')
text = 'Hello. Python!'
print(text.replace('Python', 'World')) # 바꿔서 print만 해준것뿐이지 계속 유지되는것은 아니다. 만약 데이터를 바꿀려고 하면 변수를 지정하고 출력을 하면 된다.
text = text.replace('Python', 'World') # 이렇게 새롭게 변수를 선언을 해준다음. replace로 치환하면 된다.(재할당)
# 지금같이 변수 text가 2개가 들어가서 데이터를 변경하는것을 "in-place연산"이라고 이야기를 한다.(재정의)
print(text) # 재할당 된것을 출력해라
Hello. World!
Hello. World!
# .Strip() = 문자열의 양쪽 공백을 삭제한다.
text = ' Hello. Python! '
print(text)
print(text.strip())
Hello. Python!
Hello. Python!
# .Split() = 데이터의 문자열을 분리한다.
# []로 감싸놓은 이유는 4개의 데이터가 쪼개진것을 한개의방에 잡아놓았다라고 생각하면 된다.
text = '김사과 반하나 오렌지 이메론'
names = text.split() # 기본으로 공백을 기준으로 분리
print(names)
text = '김사과,반하나,오렌지,이메론'
names = text.split(',') # ','를 기준으로 분리하도록 선언
print(names)
['김사과', '반하나', '오렌지', '이메론']
['김사과', '반하나', '오렌지', '이메론']
# .join() = 특정한 문자열 사이사이 원하는 이모지나 글자를 넣을 수 있다.
text = 'Hello'
print('🙋♂️'.join(text))
H🙋♂️e🙋♂️l🙋♂️l🙋♂️o
# startswith() = 앞쪽에 원하는 데이터가 들어가있으면 True 틀리면 False
# endswith() = 뒤쪽에 원하는 데이터가 들어가있으면 True 틀리면 False
text = 'Hello. Python!'
starts_with_hello = text.startswith('Hello')
print(starts_with_hello) # True
print(type(starts_with_hello)) # boolean형
ends_with_world = text.endswith('world!')
print(ends_with_world) #False
True
<class 'bool'>
False
5. 컬렉션 타입
여러 개의 데이터 항목으 ㄹ하나의 단위로 관리할 수 있게 해주는 데이터 구조를 의미합니다. 이것은 여러 개의 데이터를 하나의 변수에 저장하고, 관리할 수 있게 해줍니다. 파이썬에서는 리스트, 튜플, 세트, 딕셔너리 등이 기본적인 컬렉션 타입에 속합니다.
5-1. 리스트 : 여러 값들을 하나의 변수에 저장하고 관리할 수 있게 해주는 순차적인 자료구조입니다.
# li1 = list1의 약자로 알아보기 쉽게 작성하였음.
# 리스트는 대괄호 [ ]를 사용하여 생성하며, 내부에 포함된 각 항목들은 쉼표로 구분됩니다.
li1 = [1, 3, 5, 7, 9]
print(li1)
print(type(li1))
[1, 3, 5, 7, 9]
<class 'list'>
# 굳이 list에 [](대괄호)를 사용하는 이유 : tuple이나 다른 자료구조를 넣으면 클래스의 이름이 바뀌게 된다.
# 데이터를 list에 맞게 작성을 하기 위해서 []를 써서 고정시키는 역활이라고 보면 된다.
li2 = list([1, 3, 5, 7, 9])
print(li2)
print(type(li2))
[1, 3, 5, 7, 9]
<class 'list'>
li3 = ['김사과', '반하나', ' 오렌지', '이메론']
print(li3)
print(type(li3))
['김사과', '반하나', ' 오렌지', '이메론']
<class 'list'>
# 다른 데이터를 넣어도 list 클래스로 된것을 확인할 수 있다.
li4 = [1, 50.5, '김사과', True]
print(li4)
print(type(li4))
[1, 50.5, '김사과', True]
<class 'list'>
# list안에 또다른 list를 넣을 수 있다.
li5 = [1, 2, '파이썬', ['감사과', '오렌지']]
print(li5)
[1, 2, '파이썬', ['감사과', '오렌지']]
# 인덱싱
# 리스트의 각 항목은 위치(인덱스)를 가지고 있으며, 인덱스를 사용하여 접근할 수 있습니다. 인덱스는 0부터 시작합니다.
li1 = [1, 3, 5, 7, 9]
print(li1)
print([li1[0]]) #인덱스를 기준으로 0번째의 숫자를 가져옴
print([li1[-1]]) #인덱스를 기준으로 마지막번째의 숫자를 가져옴
print(li1[0] + li1[-1]) #연산을 이용해서 각 값의 연산을 진행할 수 있다.
[1, 3, 5, 7, 9]
[1]
[9]
10
li2 = ['김사과', '오렌지', '반하나', ['🍔', '🧀','🍎']]
print(li2)
print(li2[-1]) #[]를 하면 -1의 인덱싱을 했을때 []의 전체가 나온다.
print(li2[-1][1])
print(li2[-1][-3])
['김사과', '오렌지', '반하나', ['🍔', '🧀', '🍎']]
['🍔', '🧀', '🍎']
🧀
🍔
li3 = [1, 2, 3, ['김사과', '오렌지', '반하나', ['🍔', '🧀','🍎']]]
print(li3[2])
print(li3[-2])
print(li3[-1])
print(li3[-1][-2])
print(li3[-1][-1][-1])
3
3
['김사과', '오렌지', '반하나', ['🍔', '🧀', '🍎']]
반하나
🍎
# 슬라이싱
# 리스트의 일부분만을 추출할 수 있습니다.
li1 = [10, 20, 30, 40, 50]
print(li1)
print(li1[0:3]) # 인덱스의 기준으로 0 1 2 까지의 30값까지 출력을 한다.
[10, 20, 30, 40, 50]
[10, 20, 30]
li2 = li1
print(li2) # li1의 값을 공유받음
li2[0] = 100 # li1, li2의 값이 서로 공유를 받아 li2[0]=100으로 수정하면 서로 100으로 나온다.
print(li1)
print(li2)
[100, 20, 30, 40, 50]
[100, 20, 30, 40, 50]
[100, 20, 30, 40, 50]
li3 = 10, 20, 30, ['김사과', '오렌지', '반하나'], 40, ['🍏', '🥐']
print(li3[2:6])
print(li3[5][:1]) # 인덱스 5번까지 가서 1번에 해당하는 값을 불러와라
(30, ['김사과', '오렌지', '반하나'], 40, ['🍏', '🥐'])
['🍏']
# 변경가능
# 리스트의 항목들은 변경할 수 있습니다. 즉, 리스트의 항목들을 수정, 추가, 삭제할 수 있습니댜.
li1 = [10, 20, 30]
li1[1] = 100 # 인덱스 기준 1번에 100으로 수정해라
print(li1)
[10, 100, 30]
li2 = [100, 20, 30, 40, 50]
# 슬라이싱을 이용하여 리스트 데이터를 추가한 경우 리스트에 데이터만 포함
li2[1:2] = ['😃', '😍','🥹']
print(li2)
[100, '😃', '😍', '\U0001f979', 30, 40, 50]
li2 = [100, 20, 30, 40, 50]
# 인덱싱을 이용하여 리스트 데이터를 추가한 경우 리스트 안에 리스트를 포함
li2[1] = ['😃', '😍','🥹']
print(li2)
[100, ['😃', '😍', '\U0001f979'], 30, 40, 50]
li2 = [100, 20, 30, 40, 50]
print(li2[1:3])
li2[1:3] = [] # 빈 리스트를 저장하면 요소가 삭제됨
print(li2)
[20, 30]
[100, 40, 50]
li2 = [100, 20, 30, 40, 50]
print(li2)
del li2[2] # 인덱싱으로 2번에 해당하는 30을 삭제
print(li2)
[100, 20, 30, 40, 50]
[100, 20, 40, 50]
# 연산
#리스트 간의 + 연산으로 리스트를 결합할 수 있고, * 연산으로 리스트를 반복할 수 있습니다.
li1 = [10, 20, 30]
li2 = [40, 50, 60]
print (li1 + li2) # 리스트를 결합시킴
print (li2 + li1) # 리스트를 반대로 결합
[10, 20, 30, 40, 50, 60]
[40, 50, 60, 10, 20, 30]
li1 = li1 + [40, 50] # li1에 40, 50을 추가
print (li1) # 재결합 됨
[10, 20, 30, 40, 50]
li1 = [10, 20, 30]
li1 += [40, 50] # +=연산자를 사용해도 위처럼 똑같이 출력이 된다.
# += : 왼쪽에 있는 변수에 오른쪽에 있는 값을 재결합 시켜라 라는 뜻임
print (li1)
[10, 20, 30, 40, 50]
li1 = [10, 20, 30]
print (li1 * 3) # *함수를 이용하여 반복을 함, 추가로 같은 리스트 안에 넣어줌.
[10, 20, 30, 10, 20, 30, 10, 20, 30]
li2 = [10, 20, 30]
print (li2[0] + li2[2]) # 인덱스 0번, 2번을 더해라
# li2[1] = '😃'
# print (li2[0] + li2[1]) # 에러발생 str문자열과 덧셈을 하였기 때문에 에러발생 unsupported operand type(s) for +: 'int' and 'str'
40