[Python]튜플의 고급예제, 정렬(sorted vs sort)
튜플(tuple)의 고급예제, 정렬(sorted vs sort)에 대해 알아보자
# Tuple의 고급 예제 # b, a = a, b print(divmod(100, 9)) # divmod : 몫과 나머지를 반환 print(divmod(*(100, 9))) # *x : x를 unpacking print(*(divmod(100, 9))) print() ''' (11, 1) (11, 1) 11 1 ''' 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) print() ''' 0 1 [2, 3, 4, 5, 6, 7, 8, 9] 0 1 [] 1 2 [3, 4, 5] ''' # Mutable(가변형) vs Immutable(불변형) i = (1, 2, 3) l = [1, 2, 3] print(f'tuple = {i}, id = {id(i)}') print(f'list = {l}, id = {id(l)}') ''' tuple = (1, 2, 3), id = 2283147625472 list = [1, 2, 3], id = 2283147812992 ''' i = (1, 2, 3) * 2 l = [1, 2, 3] * 2 print(f'tuple * 2 : {i}, id = {id(i)}') # 새로운 객체가 만들어진다. print(f'list * 2 : {l}, id = {id(l)}') # 새로운 객체가 만들어진다. ''' tuple * 2 : (1, 2, 3, 1, 2, 3), id = 2283147763072 list * 2 : [1, 2, 3, 1, 2, 3], id = 2283147658304 ''' i *= 2 l *= 2 print(f'tuple *= 2 : {i}, id = {id(i)}') # 새로운 객체가 만들어진다. print(f'list *= 2 : {l}, id = {id(l)}') # 기존 list에 값을 추가만 했다. id (2283147658304) 값이 같음을 알 수 있다. ''' tuple *= 2 : (1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3), id = 2283147126544 list *= 2 : [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3], id = 2283147658304 ''' print() # 정렬 : sorted vs sort # reverse, key=len, key=str.lower, key=func(사용자 정의함수) # sorted : 정렬 후 새 객체를 반환 fruits = ['orange', 'banana', 'grape', 'mango', 'apple', 'lemon'] print('sorted : default', sorted(fruits)) print('sorted : reverse', sorted(fruits, reverse=True)) print('sorted : key=len', sorted(fruits, key=len)) print('sorted : key=lambda', sorted(fruits, key=lambda x: x[-1])) # 오른쪽 첫번째 글자로 정렬 print('sorted : key=lambda, reverse', sorted(fruits, key=lambda x: x[-1], reverse=True)) # 오른쪽 첫번째 글자로 역정렬 print() ''' sorted : default ['apple', 'banana', 'grape', 'lemon', 'mango', 'orange'] sorted : reverse ['orange', 'mango', 'lemon', 'grape', 'banana', 'apple'] sorted : key=len ['grape', 'mango', 'apple', 'lemon', 'orange', 'banana'] sorted : key=lambda ['banana', 'orange', 'grape', 'apple', 'lemon', 'mango'] sorted : key=lambda, reverse ['mango', 'lemon', 'orange', 'grape', 'apple', 'banana'] ''' # sort : 원본을 직접 정렬, 반환없음(None) print('sort : default', fruits.sort(), fruits) print('sort : reverse', fruits.sort(reverse=True), fruits) print('sort : key=len', fruits.sort(key=len), fruits) print('sort : key=lambda', fruits.sort(key=lambda x: x[-1]), fruits) print('sort : key=lambda, reserve', fruits.sort(key=lambda x: x[-1], reverse=True), fruits) ''' sort : default None ['apple', 'banana', 'grape', 'lemon', 'mango', 'orange'] sort : reverse None ['orange', 'mango', 'lemon', 'grape', 'banana', 'apple'] sort : key=len None ['mango', 'lemon', 'grape', 'apple', 'orange', 'banana'] sort : key=lambda None ['banana', 'grape', 'apple', 'orange', 'lemon', 'mango'] sort : key=lambda, reserve None ['mango', 'lemon', 'grape', 'apple', 'orange', 'banana'] ''' # list 와 array 선택요령 # list => 다양한 데이터형을 가질 때, # array => 한 종류의 데이터형을 가질 때
최신 댓글