[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 => 한 종류의 데이터형을 가질 때

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다