Python ====== ## 개요 ## 자료형 ### Dict ### OrderedDict 기존 [[#Dict]] 대비 딕셔너리 아이템의 순서를 보장하기 위해 만들어진 자료형이며, `collections` 모듈에서 임포트한다. 다만 파이썬 3.6부터 기본 Dict 자료형도 순서 보장이 되므로 굳이 쓸 필요는 없다. 현재 시점에서 유일한 효용가치는 딕셔너리 객체 간의 순서 일치성을 비교할 필요가 있을 때 뿐이다(Dict는 순서에 무관하게 키-값 조합이 모두 존재하면 동일한 객체라고 판단한다). ## 연산자 ### 언패킹 연산자 어떤 함수에 여러 인수를 넣어야 할 경우, 만약 리스트 내의 항목을 사용하고자 할 경우 일일이 넣는 대신 `%%*%%`를 사용할 수 있다. 예를 들어: ``` python num_list = [1,2,3,4,5] print(num_list[0], num_list[1], num_list[2], num_list[3], num_list[4]) # 1 2 3 4 5 ``` 위 코드를 언패킹 연산자로 구현하면 다음과 같이 간단해진다. ``` python num_list=[1,2,3,4,5] print(*num_list) # 1 2 3 4 5 ``` 혹은 여러 변수를 동시에 언패킹해도 된다. ``` python num_list=[1,2,3,4,5] num_list2=[6,7,8,9,0] print(*num_list, *num_list2) # 1 2 3 4 5 6 7 8 9 0 ``` 이를 응용하면 여러 리스트를 하나로 합치거나, ``` python list3 = [*num_list, *num_list2] # [1,2,3,4,5,6,7,8,9,0] ```` 변수를 쪼갤 때 '나머지' 항목을 몰아서 할당하는 것도 가능하다. ``` python myname = 'James' first, *middle, last = myname # first: J, last: s, middle: ame ``` 딕셔너리의 경우에는 `**` 연산자를 사용하여 동일한 기능을 구현할 수 있다. ``` python num_dict = {'a': 1, 'b': 2, 'c': 3} num_dict2 = {'d': 4, 'e': 5, 'f': 6} new_dict = {**num_dict, **num_dict2} # {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6} ``` ## numpy Numpy는 내장 list 대비 꽤나 빠른 실행 속도를 보이는 것으로 알려져 있다. 이는 C++로 작성된 코어의 성능이 더 빠르기 때문이다(참고: [Exploring NumPy: Features & Performance Vs Lists | by Ayman Hamed | Stackademic](https://blog.stackademic.com/exploring-numpy-features-performance-vs-lists-7f0b43d2af5f)).