메서드 (Method)
메서드의 형식은 이러하다.
타입 .메서드()
- 타입: 누가 할 수 있는지
- (): input은 무엇인지
- 타입.메서드(): 이를 통한 결과는 무엇인지
메서드와 함수 비교
a와 b를 정렬해보자.
a = [10, 1, 100] # 매서드 사용
new_a = a.sort()
print(a, new_a)
# 출력: [10, 1, 100] None
# list 메서드를 활용하면, 그 메서드를 정렬된 상태로 변경한다. (원본을 변경한다.)
# return되는 것은 None이다.
#a의 실제 활용 코드
a = [10, 1, 100]
a.sort() # a를 정렬된 상태로 활용한다.
b = [10, 1, 100] # 함수 사용
new_b = sorted(b)
print(b, new_b)
# 출력: [10, 1, 100] [1, 10, 100]
# sorted 함수를 활용하면 원본을 변경하지 않는다.
# return되는 것은 정렬된 리스트이다.
# b의 실제 활용 코드
b = [10, 1, 100]
b = sorted(b) #바꾼 것을 넣어준다.
(FYI, 함수는 기능을 분해해서 독립적으로 쓸 수 있을 뿐만 아니라 추상화된 것이다. )
문자열
문자열 탐색 및 검증
.find(x)
x의 첫 번째 위치를 반환한다. (없으면 -1을 반환한다)
'문자열'.find('문') #출력:0 #인덱스이다.
'문자열'.find('김') #출력:-1
. index(x)
x의 첫 번째 위치를 반환한다. (없으면 오류가 발생한다)
'문자열'.in('문') #출력:0
'문자열'.find('김') #출력:오류
문자열 관련 검증 메서드
'abs'.isalpha() #True #문자열인지 확인하는 것
'Ab'.isupper() #False #모두 대문자인지 확인하는 것
'ab'.islower() #True #모두 소문자인지 확인하는 것
'Title'istitle() #True #첫 글자가 대문자인지 확인하는 것
순서 상관 없으며 검증(확인)하는 메서드이다.
문자열 변경
.replace(old, new[,count])
바꿀 대상의 글자를 새로운 글자로 바꿔서 반환한다.
count를 지정하면 해당 개수만큼 실행한다.
#모든 o를 a로 바꾸기
'coone'.replace('o', 'a') #caane
#2개의 o를 !로 바꾸기
'wooooowoo'.replace('o', '!', 2) # w!!ooowoo
.strip([chars])
특정한 문자들을 지정하면 양쪽 / 왼쪽 / 오른쪽을 제거한다.
보통 공백을 제거할 때 사용한다
기본은 모든 공백을 제거하며, 문자열을 지정하지 않으면 공백을 제거한다.
' 와우!\n'.strip() # '와우!'
' 와우!\n'.lstrip() # '와우!\n'
' 와우!\n'.rstrip() # ' 와우!''
'안녕하세요????'.rstrip('?') # '안녕하세요'
.split(sep=None, maxsplit=-1)
문자열을 특정한 단위로 나눠 (문자를 쪼개서) 리스트로 반환한다.
기본은 공백으로 나누어준다.
'a,b,c'.split('_') # ['a,b,c']
'a,b,c'.split('') # ['a', 'b', 'c']
'separator'.join([iterable])
쪼개진 문자열을 합쳐준다.
반복 가능한(iterable) 컨테이너 요소들을 합쳐서 문자열로 반환한다.
''.join(['3', '5'])
# 출력: 35
names = ','.join(['홍길동', '김철수'])
# 출력: 홍길동,김철수
numbers = ' '.join([10, 20, 100])
print(numbers)
# 오류가 뜬다. 문자열이 입력되어야 하는데 숫자가 입력됐으므로.
numbers =' '.join(map(str, [10, 20, 100]))
# 출력: 10 20 100
문자열이 아닌 값이 있으면 TypeError가 발생한다.
기타 변경
- .upper(): 대문자로 바꾸기
- .lower(): 소문자로 바꾸기
- .swapcase(): 대문자는 소문자, 소문자는 대문자로 바꾸기
문자열은 Immutable이라서 스스로 바뀌지 않는다.
(Immutable은 문자열, tuple , range)
리스트
- 스스로 변경 가능하다. (mutable)
- 반복 가능하다.(iterable)
값 추가 및 삭제
.append()
리스트 마지막에 값을 추가한다.
.extend(iterable)
반복가능한 것들을 넣으면 추가시켜준다.
a = ['apple']
a.extend('banana', 'mango')
print(a)
# TypeError가 발생한다.
# 하나만 추가할 수 있기 때문이다.
# 오류를 수정하기 위해서 리스트로 묶어줘야 한다.
a.extend(['banana', 'mango']) #이렇게 수정해주면 된다!
a.extend('banana')
print(a)
# 문자열을 넣어줬네? 하고 글자 하나씩 출력된다.
# 'b', 'a', 'n', 'a', 'n', 'a'
.insert(i, x)
정해진 위치에 값을 끼어 넣을 수 있다.
cafe = ['starbucks', 'tomato']
cafe.insert(0, 'start')
#['start', 'starbucks', 'tomato']
cafe.insert(10000, 'end')
# ['starbucks', 'tomato', 'end'] -> 리스트의 길이보다 큰 수인 경우 맨 뒤에 추가시켜준다.
.remove(x)
원본 리스트 자체를 바꾼다. (문자열과 다른 느낌)
값이 x인 것을 삭제한다.
x가 없는 경우 ValuieError가 뜬다.
.pop(i)
정해진 위치 i에 있는 값을 삭제하고, 그 항목을 반환한다.
i가 지정되어 있지 않으면 마지막 항목을 삭제하고 반환한다.
하나를 꺼내주면서 값 자체를 저장해서 쓸 수 있다.
numbers = ['hi', 1, 2, 3]
pop_number = numbers.pop()
#['hi', 1, 2]
pop_number = numbers.pop(0)
#[1, 2, 3]
.remove()는 값을 제거하고, .pop()은 마지막 혹은 인덱스를 제거한다.
.clear()
모든 항목을 삭제한다.
탐색
.index(x)
x 값을 찾아 인덱스 값을 반환한다. (위치를 알려준다.)
numbers = [1, 2, 3, 4]
print(numbers.index(3)) #3이란 숫자 있어? 웅! #출력: 2
print(numbers.index(100)) #100이란 숫자 있어? 없엉==오류
.count(x)
원하는 값의 개수를 반환한다.
numbers = [1, 2, 3, 4, 1, 1]
numbers.count(1) #3
numbers.count(100) #0
.sort()
원본 리스트를 정렬하고 None을 반환한다.
sorted 함수와 비교해보자.
numbers = [3, 2, 5, 1]
result = numbers.sort()
print(numbers, result)
#출력: [1, 2, 3, 5] None -> 원본이 변경되었다.
numbers = [3, 2, 5, 1]
result = sorted(numbers)
print(numbers, result)
#출력: [3, 2, 5, 1](원본) [1, 2, 3, 5] -> 원본이 변경되지 않고 정렬된 리스트를 반환한다.
.reverse()
순서를 반대로 뒤집어준다.
정렬을 하지 않는다.
None을 반환한다.
numbers = [3, 2, 5, 1]
result = numbers.reverse()
print(numbers, result)
#출력: [1, 5, 2, 3] None
딕셔너리
- 키와 값이 쌍으로 이뤄져있다.
조회
.get(key[.default])
Key에 있는 값을 가져올 수 있다.
KeyError가 발생하지 않는다.
default 값(0)을 넣어주면 0을 출력한다.
my_dict = {'apple': '사과', 'banana': '바나나'}
print(my_dict.get('pineapple')) # None
print(my_dict.get('apple')) # 사과
print(my_dict.get('pineapple', 0)) # 0
에러를 발생시키는 것이 있고 기본값을 설정하는 것이 있다.
추가 및 삭제
.pop(key[.default])
- key가 딕셔너리에 있으면 제거하고 해당 값을 반환한다.
- 그렇지 않으면 default를 반환한다.
- default 값이 없다면 KeyError가 발생한다.
my_dict = {'apple': '사과', 'banana': '바나나'}
data = my_dict.pop('apple') #-> 키가 들어가야 한다.
print(data, my_dict)
# 출력: 사과 {'banana': '바나나'}
.update([other])
입력한 새로운 키와 값으로 덮어준다.
my_dict = {'apple': '사', 'banana': '바나나'}
my_dict.update(apple='사과')
print(my_dict)
# {'apple': '사과', 'banana': '바나나'}
주의
딕셔너리는 인덱스 개념이 아닌 KEY에 접근하는 것이다.
딕셔너리는 Key로 접근하고 리스트는 인덱스로 접근한다.
또한, 딕셔너리끼리는 더하기를 할 수 없다.
'Python' 카테고리의 다른 글
프로젝트 문제 정리 (04-06) (0) | 2022.07.16 |
---|---|
프로젝트 정리 - JSON, 모듈, 파일 읽고 쓰기 (00-03) (2) | 2022.07.15 |
함수 (Function) (0) | 2022.07.13 |
제어문 (Control Statement) - 반복문과 조건문 (0) | 2022.07.12 |
Python 개념 - 컨테이너 (0) | 2022.07.11 |