list와 dict
list
list는 자바스크립트의 array와 거의 비슷한데, 대괄호 표기법으로 음수를 쓸 수 있다는 점에서 참 마음에 든다.
newList = [1, 2, 3, 4]
newList[0] = 99 # 값 변경 ( 덮어쓰기 )
newList[2] # 값 반환
newList[a:b] # a 인덱스부터 b 인덱스 직전까지의 값을 반환
자바스크립트와 달리 훨씬 더 직관적인 메서드 이름도 마음에 든다. 개인적으로 unshift가 0번 인덱스에 값을 넣는 행위라는 걸 기억하는 게 참 쉽지 않다.
newList.append(a) # 마지막 인덱스로 a 값 추가
newList.insert(a, b) # a번 인덱스에 b 값을 추가한다.
newList.remove(a) # 0번 인덱스부터 시작하여 가장 먼저 a와 일치하는 item 삭제
newList.clear() # list 싹 비우기
del newList[a] # a번 인덱스 삭제
del newList[a:b] # a 인덱스부터 b 인덱스 직전까지 삭제
다양한 함수와 키워드, 메서드를 사용하여 list에 대해 조사할 수도 있다.
len(newList) # list의 길이를 반환
2 in newList # 해당 item의 존재를 참거짓으로 반환
2 not in newList # 해당 item의 부존재를 참거짓으로 반환
newList.index(a) # a 값을 item으로 가지고 있는 첫 인덱스 번호를 반환.
# a 값이 list 내에 없으면 에러
newList.count(a) # list 내에 요소 a가 등장하는 횟수를 반환
# 기존 list가 변경됨
newList.sort()
newList.reverse()
# 새로운 list를 반환함
sorted(newList, reverse=True) # reverse=True는 역순이 아니라 '내림차순'
reversed(newList)
# 동일한 list를 반환하되, 참조형aliasing 문제 해결
list(newList)
dict
자바스크립트의 object와 비슷하게 "key: value" 쌍으로 구성되어있다.
newDict = {
"name": "Ayden",
"age": 28,
"bornYear": 1994,
"most Famous Work": {
"title": "사서 에밀리 힐덴베르크의 우울",
"language": "korean"
}
}
newDict.items() # dict의 key와 values의 쌍으로 된 list가 반환된다
newDict.keys() # dict의 key로만 이루어진 list가 반환된다
newDict.values() # dict의 values로만 이루어진 list가 반환된다
기본적인 접근법은 list와 동일하다. 하지만 안전한 dict 사용을 위한 메서드가 여럿 준비되어있다.
# 다른 딕셔너리 또는 키-값 쌍을 병합하거나, 기존 항목을 업데이트
my_dict = {'a': 1, 'b': 2}
my_dict.update({'b': 3, 'c': 4}) # b는 업데이트되고 c는 추가됨
print(my_dict) # {'a': 1, 'b': 3, 'c': 4}
# 키에 해당하는 값을 반환하며, 키가 없을 경우 기본값을 반환
my_dict = {'a': 1, 'b': 2}
print(my_dict.get('a')) # 1
print(my_dict.get('z', '없음')) # '없음'
list()와 비슷하게 파이썬의 copy 모듈의 deepcopy()를 사용하면 내부 중첩 객체까지 복사할 수 있다. 자바스크립트에는 라이브러리로만 존재하는 기능이라 조금 부럽기도 하고.
import copy
original = {'a': 1, 'b': {'c': 2}}
deep_copy = copy.deepcopy(original)
deep_copy['b']['c'] = 99
print(original) # {'a': 1, 'b': {'c': 2}} (원본에 영향 없음)
블로그의 정보
Ayden's journal
Beard Weard Ayden