Python

5. 시퀀스형 자료구조의 메서드 (method)

개발자 뭄뭄 2022. 8. 1. 00:31
반응형

1. 데이터 구조의 활용

데이터 구조.메서드() 형태로 활용한다. 쉽게 생각하면 주어.동사()

list.append(10)
string.split()

	# 내가 지금까지 많~이 쓰고 있었던 method 함수들!


시퀀스형 자료구조

2. 문자열 (string)

변경할 수 없고(immutable), 순서가 있고(ordered), 순회 가능한(iterable)

dir(string)dir(’string’) 을 사용하면 string 이 가지는 함수를 찾을 수 있다.

조회, 탐색
word = happy

#1 s.find(x) -> x의 위치를 반환, 없으면 -1을 반환. 오류가 나지 않음.

print(word.find('a')) # 1

#2 s.index(x) -> find와 유사하지만, 없으면 오류 발생

print(word.index('a')) #1
print(word.index('z')) #error
검증, 판별
# 1 문자열의 접두/ 접미사 검색 할 때
.startswith("")
# 2 문자열 슬라이싱 대신 사용한다.

.endswith("")


# 3 숫자 판별 메소드
.isnumeric()
.isdigit()
.isdecimal()

# 아래로 갈수록 보수적이다. 셋다 음수나 float 형은 False로 반환된다.
#3 s.isalpha() -> 알파벳 문자여부, .isspace() 공백인가

print(word.isalpha()) # True/False로 답이 나온다.
print('ㄱㄴㄷ'.isaplha()) # 한글도 가능하다.

#4 s.istitle()
#  title은 첫번째만 대문자. 나머지는 소문자인 경우.
print('I am harim'.istitle()) # False
print('I Am Harim'.istitle()) # True

문자열 변경
.replace(old, new, [,count])
.strip() #lstrip, lstrip 
# ()안이 빈칸이면 공백을 없애고, 문자면 문자를 삭제한다. (꼭 문자 그대로가 아니더라도, 조합도!)

# strip을 사용할 때의 주의 점은, 띄어쓰기가 안되어있는 경우, 그 앞에 단어의 다른 조합이 있을 때
# 단어 뿐만아니라 철자로 만들 수 있는 모든 조합을 삭제한다.
# 그렇기 때문에 공백에 대한 주의가 필요하다.

.split(" ")

# seperator.join(iterable)
word = "배고파"
words = ["안녕", "hello"]

"!".join(word) # '배!고!파'
",".join(words) # '안녕,hello'

# 단어나 list는 모두 순회가능하기 때문에 .join method를 사용할 수 있다.
# .capitalize() : 공백이나 ' 이후에 대문자
# I Am Human. I'M Human.

# .title() : 첫 글자를 제외한 나머지는 소문자
# I am human. i'm human.

# 대소문자를 변경하고 싶다면, .swapcase()

⚠️ 주의사항

a.method() 함수를 이용하여도, a가 바뀌는 것이 아니라. a의 복사본이 바뀌는 것이다. 그렇기 때문에 a = a.method() 라고 사용하여야 한다.

또한 위의 과정 없이 그냥 print(a.method()) 라고 쓰면 None 이 반환되니, 조심하자.


3. 리스트(list)

변경할 수 있고(mutable), 순서가 있고(ordered), 순회 가능한(iterable)

dir(list) 를 검색하면 list에서 사용가능한 함수들이 나온다.

값의 추가 및 삭제
# 문자열(string)과 다르게, list의 id 는 동일하다.
# 즉, string은 불변(immutable)이고, list는 가변(mutable) 이다.


list.append(x)
list.insert(i,x) # 특정한 위치에 새로운 값을 넣고 싶으면, index(i) 번째에 x가 들어간다.
								 # 만약 i의 값이 list의 길이보다 길다면, 맨 마지막에 들어간다.

# extend 안에는 iteralbe 한 요소 어느것이나 들어갈 수 있다.
list.extend(['coffee']) # 리스트와 또 다른 리스트를 합치는 것이다.
list.extend('cup') # 이렇게 작성하면, ['c', 'u', 'p'] 이런식으로 따로따로 들어간다.

# append vs extend
list.append(['coffee']) # 결과는 [['coffee']]
list.extend(['coffee']) # 결과는 [, 'coffee']
list.extend('coffee') # 결과는 [, 'c', 'o', 'f', 'f', 'e', 'e']

# a.insert(0, x)는 리스트의 처음에 x를 삽입하고,
# a.insert(len(a), x) 는 a.append(x) 와 같습니다.

#.remove() : 첫번째로 () 인 값을 삭제한다. 즉, 앞에서부터 삭제한다.
list.remove('hi') # 없는 요소를 삭제할 경우, 에러

# list.pop() : pop()이 비어있으면 맨 마지막 값부터 빼낸다.
list.pop('hi') #리스트에서 'hi' 라는 값을 뽑아낸다.
varialbe = list.pop('hi') # 이런식으로 쓸 수도 있음.

list.clear() # 리스트를 싹 배운다!

탐색 및 정렬
# 리스트안에 ()의 index를 반환한다. ()가 없으면 에러
a.index()

# 리스트 안에 있는 요소의 개수를 세는 함수, 없으면 0을 반환
list.count() 

# 원하는 값을 모두 삭제하려면 다음과 같이 할 수 있습니다.
a = [1, 2, 1, 3, 4]
target_value = 1
for i in range(a.count(target_value)):
    a.remove(target_value)
print(a)

list.sort() # 원본 리스트를 정렬한다.
list.reverse() # 원본 리스트를 역순으로 정렬한다.(정렬x)
list.sort(reverse=True)

numbers = [3, 2, 5, 7]
result = numbers.sort()
print(numbers, result) # -> 원본을 정렬하기 때문에, numbers는 있지만, result 는 none입니다.

numbers = [3, 2, 6, 8)
# result = numbers.sorted() 이거는 없는 함수입니다!! 없는 문법
result = sorted(numbers)
print(numbers, result) # 원본은 그대로 두고, 복사본을 정렬하기 때문에 원본, 정렬된 복사본 두개를 반환한다.
💡
sorted(numbers) vs numbers.sort() 의 비교

원본은 내버려두고, 복사본을 정렬한다 / 원본을 정렬한다!

list.reverse() # 순서를 반대로 뒤집는다. 
							 # .sort() 와 마찬가지로 원본을 뒤집는다.

4. 튜플 (tuple)

변경할 수 없고(immutable), 순서가 있고(ordered), 순회 가능한(iterable)

튜플은 불변자료형이기 때문에, 값을 바꿀 수 없다!

내부 내용을 추가/ 변경하는 것 이외에 인덱스를 찾거나, 하는 것은 가능하다.

탐색 및 정렬
# 리스트안에 ()의 index를 반환한다. ()가 없으면 에러
a.index()

# 리스트 안에 있는 요소의 개수를 세는 함수, 없으면 0을 반환
list.count() 

# 원하는 값을 모두 삭제하려면 다음과 같이 할 수 있습니다.
a = [1, 2, 1, 3, 4]
target_value = 1
for i in range(a.count(target_value)):
    a.remove(target_value)
print(a)

5. 연산자

# 'in' 은 문자, list, tuple에서 모두 사용 가능하다.
# not in
print('a' in 'apple') # True
print('apple' in 'apple curry') # True
print('apple' in ['apple', 'banana', 'cherry']) # True
print('apple' in ('apple'. 'banana', 'cherry')) # True



# 연산자 '+'
print('apple' + 'curry') # applecurry
print(['apple', 'banana']+['cherry']) # []
print(('apple', 'banana')+('cherry')) # 에러. 튜플은 더하기 안됩니다용!

# 연산자 '*'
# '*'는 string, list, tuple에서 모두 사용 가능하다.
# 시퀀스를 반복한다.



Uploaded by N2T

반응형