본문 바로가기

Python/Intermediate

[Python] 고급 - 리스트 및 튜플(2)

  • 컨테이너 타입 자료형(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

 

# packing
x, y, *rest = range(10)
print(x, y, rest)

x, y, *rest = range(2)
print(x, y, rest)

x, y, *rest = 1, 2, 3, 4, 5
print(x, y, rest)

--------------------------------------------[result]

0 1 [2, 3, 4, 5, 6, 7, 8, 9]
0 1 []
1 2 [3, 4, 5]

 

Mutable(가변) vs Immutable(불변)

 

# Mutable(가변) vs Immutable(불변)

l = (15, 20, 25)
m = [15, 20, 25]

print(l, id(l))
print(m, id(m))
print()

l = l * 2
m = m * 2

print(l, id(l))
print(m, id(m))
print()

l *= 2
m *= 2

print(l, id(l))
print(m, id(m))

--------------------------------------------[result]

(15, 20, 25) 1358267819496
[15, 20, 25] 1358267101960

(15, 20, 25, 15, 20, 25) 1358267244808
[15, 20, 25, 15, 20, 25] 1358267525704 <== 동일, 연산자의 할달에 따라 변경 또는 동일함

(15, 20, 25, 15, 20, 25, 15, 20, 25, 15, 20, 25) 1358266905368
[15, 20, 25, 15, 20, 25, 15, 20, 25, 15, 20, 25] 1358267525704 <== 동일

 

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('sorted -', sorted(f_list, reverse=True))
print('sorted -', sorted(f_list, key=len))
print('sorted -', sorted(f_list, key=lambda x: x[-1]))
print('sorted -', sorted(f_list, key=lambda x: x[-1], reverse=True))
print()

print('sorted -', f_list)

--------------------------------------------[result]

sorted - ['apple', 'coconut', 'lemon', 'mango', 'orange', 'papaya', 'strawberry']
sorted - ['strawberry', 'papaya', 'orange', 'mango', 'lemon', 'coconut', 'apple']
sorted - ['apple', 'mango', 'lemon', 'orange', 'papaya', 'coconut', 'strawberry']
sorted - ['papaya', 'orange', 'apple', 'lemon', 'mango', 'coconut', 'strawberry']
sorted - ['strawberry', 'coconut', 'mango', 'lemon', 'orange', 'apple', 'papaya']

sorted - ['orange', 'apple', 'mango', 'papaya', 'lemon', 'strawberry', 'coconut']

 

# 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)

# List vs Array 적합 한 사용법 설명
# (list 장점) - 리스트 기반 : 융통성, 다양한 자료형(container type), 범용적 사용
# (array 장점) - 숫자 기반 : 배열(리스트와 거의 호환), deep learning, ML 등 고속연산시 좋음

--------------------------------------------[result]

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']

'Python > Intermediate' 카테고리의 다른 글

[Python] 고급 - Dict 및 Set(2)  (0) 2021.05.24
[Python] 고급 - Dict 및 Set(1)  (0) 2021.05.23
[Python] 고급 - 리스트 및 튜플(1)  (0) 2021.05.22
[Python] NamedTuple  (0) 2021.05.21
[Python] Magic Method(2)  (0) 2021.05.21