Python 복습
문자열, 리스트
새롭게 알게된 것, 자주 헷갈리는 것 위주로 정리
immutable 객체
int, str, float, bool, tuple
mutable 객체
list, dict, `set
id()와 type()을 이용하면 정확히 알 수 있다.
a = 10
print(id(a)) # a는 10이라는 데이터가 저장된 메모리 주소를 가리킨다. 140706287752264
a += 1 # a 변경
print(a)
print(id(a)) # a의 값이 변하면 메모리 주소가 변경된다. 140706287752296
# int는 immutable하다.
# 변경 전의 10이라는 데이터는 메모리에 계속 저장된다.
print('----------')
b = 'Hello World'
print(id(b)) # b는 'Hello World'가 저장된 메모리 주소를 가리킨다. 2247385331344
b += '!' # b 변경
print(b)
print(id(b)) # b의 값이 변하면 메모리 주소가 변경된다. 2247371532976
# str는 immutable하다.
# 변경 전의 'Hello World'이라는 데이터는 메모리에 계속 저장된다.
print('----------')
c = [1]
print(id(c)) # 2247385417280
c.append(2)
print(c)
print(id(c)) # 2247385417280
# list는 mutable이기 때문에 변경 전후의 메모리주소가 동일하다.
사용되지 않는 값들은 Garbage Collection이 더이상 참조되지 않는 메모리를 정리한다.
참고 : https://blog.metafor.kr/163
s.rjust(n) : n칸에 문자열 s를 오른쪽 정렬한다.
s.ljust(n) : n칸에 문자열 s를 왼쪽 정렬한다.
s.center(n) : n칸에 문자열 s를 중앙 정렬한다.
s.strip([chars]) : 문자열 s 양끝의 공백이나 특수문자를 제거한다.
\t, \n 등)를 제거한다. print('&test&^^&'.strip('&') # test&^^
print('&test&^^&'.strip('&^') # test
print('&test&^^&'.strip('^&') # test
s1 = 'Hello World'
s2 = 'Hello\nWorld'
print(s1.split()) # ['Hello', 'World']
# print(s1.split('')) # ValueError: empty separator
print(s1.split(' ')) # ['Hello', 'World']
print(s2) # Hello
# World
print(s2.split()) # ['Hello', 'World']
print(s2.split(' ')) # ['Hello\nWorld'] 이 경우에는 공백이 구분자라 개행문자는 포함되지 않는다.
{}는 빈 집합이 아닌 빈 딕셔너리이며, 공집합을 생성하기 위해서는 set()으로 생성해야한다. (생각해보면 당연한건데 처음 깨달았다......)a = () # 튜플
print(type(a))
a = (1) # int
print(type(a))
a = (1, ) # 튜플
print(type(a))
nums = [1, 2, 3, 4, 5]
# 0 1 2 3 4
nums[1:4] = [6, 7] # [1, 6, 7, 5]
nums[1:4] = [6, 7, 8] # [1, 6, 7, 8, 5]
nums[1:4] = [6, 7, 8, 9] # [1, 6, 7, 8, 9, 5]
nums[10:] = [6, 7, 8, 9] # [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 그냥 제일 뒤에 붙는다.
처음 파이썬 배울 땐 하드웨어 관련(특히 메모리) 나오면 언젠가는... 이러면서 흘려들었는데(죄송합니다) 지금은 다행히 큰 어려움 없이 이해할 수 있어서 오늘 공부도 즐거웠다. ✧。٩(ˊ ᗜ ˋ)و✧*。