- 컨테이너 타입 자료형(Container : 서로다른 자료형[list, tuple, collections.deque],
a = [3, 3.5, 'a'] # 서로 다른 자료형, 컨네이너 타입 자료형
- Flat : 한 개의 자료형[str, bytes, bytearray, array.array, memoryview])
한개의 자료형만 저장, 빠름, 자연어 처리, 숫자, 이산, 회계분석, 기상데이터 등 단일 형태의 연산
- 가변(list, bytearray, array.array, memoryview, deque)
- 불변(tuple, str, bytes)
Unpacking
# Tuple Advanced
# Unpacking
# b, a = a, b
print(divmod(100, 9))
print(divmod(*(100, 9)))
print(*(divmod(100, 9)))
--------------------------------------------[result]
(11, 1)
(11, 1)
11 1
Packing
x, y, *rest = range(10) # *rest 처럼 '*' 추가하면 나머지 값들이 패킹되어 하나의 변수에 입력됨.
print(x, y, rest)
# 0 1 [2, 3, 4, 5, 6, 7, 8, 9]
x, y, *rest = range(2)
print(x, y, rest)
# 0 1 []
x, y, *rest = 1, 2, 3, 4, 5
print(x, y, rest)
# 1 2 [3, 4, 5]
Mutable(가변) vs Immutable(불변)
# Mutable(가변) vs Immutable(불변)
l = (15, 20, 25) # 불변
m = [15, 20, 25] # 가변
print(l, id(l)) # id 값이 계속 변경된다.
print(m, id(m)) # id 값이 변경될 수도 있지만,.
# (15, 20, 25) 140472945612480
# [15, 20, 25] 140473214396032
l = l * 2
m = m * 2
print(l, id(l)) # id 값이 계속 변경된다.
print(m, id(m)) # id 값이 같다.
# (15, 20, 25, 15, 20, 25) 140292155429120
# [15, 20, 25, 15, 20, 25] 140292155022080
l *= 2
m *= 2
print(l, id(l)) # id 값이 계속 변경된다.
print(m, id(m)) # id 값이 같다.
# (15, 20, 25, 15, 20, 25, 15, 20, 25, 15, 20, 25) 140292154931808
# [15, 20, 25, 15, 20, 25, 15, 20, 25, 15, 20, 25] 140292155022080
l *= 2
m *= 2
print(id(l)) # id 값이 계속 변경된다.
print(id(m)) # id 값이 같다.
# 140656957855440
# 140656958118656
sort vs sorted
# sort vs sorted
# reverse, key=len, key=str.lower, key=func..
# sorted : 정렬 후 새로운 객체 반환, 원본 변경없음.
f_list = ['orange', 'apple', 'mango', 'papaya', 'lemon', 'strawberry', 'coconut']
print('sorted -', sorted(f_list))
print('original - ', f_list) # 원본은 변경이 되지 않는다.
print('sorted r-', sorted(f_list, reverse=True))
print('sorted len-', sorted(f_list, key=len))
print('sorted -1-', sorted(f_list, key=lambda x: x[-1])) # 마지막 글자를 기준으로 정렬
print('sorted -1r-', sorted(f_list, key=lambda x: x[-1], reverse=True))
# sorted - ['apple', 'coconut', 'lemon', 'mango', 'orange', 'papaya', 'strawberry']
# original - ['orange', 'apple', 'mango', 'papaya', 'lemon', 'strawberry', 'coconut']
# sorted r- ['strawberry', 'papaya', 'orange', 'mango', 'lemon', 'coconut', 'apple']
# sorted len- ['apple', 'mango', 'lemon', 'orange', 'papaya', 'coconut', 'strawberry']
# sorted -1- ['papaya', 'orange', 'apple', 'lemon', 'mango', 'coconut', 'strawberry']
# sorted -1r- ['strawberry', 'coconut', 'mango', 'lemon', 'orange', 'apple', 'papaya']
# sort : 정렬 후 객체 직접 변경, 원본이 바로 변경됨, 되돌릴수 없음.
# 반환 값 확인(None)
print('sort -', f_list.sort(), f_list)
print('sort -', f_list.sort(reverse=True), f_list)
print('sort -', f_list.sort(key=len), f_list)
print('sort -', f_list.sort(key=lambda x: x[-1]), f_list)
print('sort -', f_list.sort(key=lambda x: x[-1], reverse=True), f_list)
# sort - None ['apple', 'coconut', 'lemon', 'mango', 'orange', 'papaya', 'strawberry']
# sort - None ['strawberry', 'papaya', 'orange', 'mango', 'lemon', 'coconut', 'apple']
# sort - None ['mango', 'lemon', 'apple', 'papaya', 'orange', 'coconut', 'strawberry']
# sort - None ['papaya', 'apple', 'orange', 'lemon', 'mango', 'coconut', 'strawberry']
# sort - None ['strawberry', 'coconut', 'mango', 'lemon', 'apple', 'orange', 'papaya']
# # List vs Array 적합한 사용법 설명
# # 리스트 기반 : 융통성, 다양한 자료형, 범용적 사용
# # 숫자 기반 : 배열(리스트와 거의 호환)
'Python > Intermediate' 카테고리의 다른 글
[Python] 고급 - Dict 및 Set(2) - Sequence(4) (0) | 2021.05.24 |
---|---|
[Python] 고급 - Dict 및 Set(1) - Sequence(3) (0) | 2021.05.23 |
[Python] 고급 - 리스트 및 튜플(1) - Sequence(1) (0) | 2021.05.22 |
[Python] NamedTuple - Magic Method(3) (0) | 2021.05.21 |
[Python] Magic Method(2) (0) | 2021.05.21 |