List ⇒ 반복 작업을 수행하는데에 적합
Dictionary ⇒ key와 그에 대응하는 value를 가짐, 할당 및 액세스에 대해 일정한 시간 성능을 제공하므로 동적 정보를 기록하는 데 이상적
slicing 구문 기본 형식 : list[start:end]
a[:]
는 모든 요소를 선택slice의 stride 구문 : list[start:end:stride]
car_ages = [0, 9, 4, 8, 7, 20, 19, 1, 6, 15]
car_ages_descending = sorted(car_ages, reverse=True) # 내림차순 정렬
oldest = car_ages_descending[0]
second_oldest = car_ages_descending[1]
others = car_ages_descending[2:]
print(oldest, second_oldest, others)
oldest, second_oldest, *others = car_ages_descending
print(oldest, second_oldest, others)
*
로 표시된 표현식을 사용하여 다른 부분에 할당되지 않은 모든 값을 목록으로 가져올 수 있다.*
표현식을 사용할 수 있으며, 항상 0 이상의 값을 포함한다.list, string, tuple 등 -> 다양한 기준에 따라 항목을 정렬하는 방법 제공(default: 오름차순)
정렬에 사용할 객체에 속성이 있는 경우 -> key parameter 사용
tools = [
Tool('level', 3.5),
Tool('hammer', 1.25),
Tool('screwdriver', 0.5),
Tool('chisel', 0.25),
]
tools.sort(key=lambda x: x.name) ```
여러 기준을 사용하여 정렬하는 경우 -> tuple type 사용
-
연산자를 사용하여 정렬 방향을 혼합할 수 있다.power_tools.sort(key=lambda x: (-x.weight, x.name))
**kwargs
등의 키워드 인수를 프로그래머가 원래 함수를 호출한 방법과 일치하도록 유지함dictionary와 상호작용하는 작업: key 및 관련 값에 액세스, 할당, 삭제
dict type -> 존재하는 key를 가져오거나 기본값을 반환하는 작업을 수행하기 위해 get 메소드 제공
# 누릭된 key 값 다루기
counters = {
'pumpernickel': 2,
'sourdough': 1,
}
# 방법1) if문 사용 - key가 존재하면 True 반환
key = 'wheat'
if key in counters:
count = counters[key]
else:
count = 0
counters[key] = count + 1
# 방법2) KeyError exception
try:
count = counters[key]
except KeyError:
count = 0
counters[key] = count + 1
# 방법3) get method 이용
count = counters.get(key, 0) # 두 번째 parameter는 첫 번째 parameter key가 없는 경우 반환할 기본값을 의미
counters[key] = count + 1
또한 dict type은 setdefault method를 제공한다.
count = counters.setdefault(key,0)
collections
의 defaultdict
는 key가 없을 때 default value를 자동으로 저장한다.setdefault method는 default값을 생성할 때 예외가 발생할 수 있는 경우 적합하지 X
defaultdict로 전달된 함수는 default 값을 액세스하는 key에 의존할 수 X
__missing__
method 사용
__missing__
method 호출 -> key에 대한 새 default 값을 만들어 dictionary에 삽입하여 호출자에게 반환