0. Introduction

  • sortsorted는 책 한 권으로 나올만큼 많은 내용이 있지만, 무엇보다 이 두가지의 기본적인 차이를 알아본다.
  • 그리고, [TIL] Python basic 29: Data Model에서 상세 분류에서 언급된 Array data type에 대해 알아본다.

1. Sort vs Sorted

- sort: sort the list in ascending order and return None.
- sorted: Return a new list containing all items from the iterable in ascending order.

sort()sorted()
function/methodmethodfunction
원본 수정OX
반환값NoneNew list object
  • reverse와 reversed도 .reverse()는 메서드로 원본 수정하고 반환값은 None, reversed()는 함수로 원본 수정하지 않고 수정된 값을 반환한다.

  • list data model에서 자주 사용하는 함수인 sortsorted에 대해 알아보자.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
> f_list = ['orange', 'apple', 'mango', 'papaya', 'lemon', 'strawberry', 'coconut']

## sort
# 1. 반환값이 없다.
> print('sort - ', f_list.sort())
sort - None

# 2. 원본 객체를 수정한다.
> print(f_list)
['apple', 'coconut', 'lemon', 'mango', 'orange', 'papaya', 'strawberry']

## sorted
# 1. 반환값이 존재한다.
> print('sort - ', sorted(f_list))
sorted - ['apple', 'coconut', 'lemon', 'mango', 'orange', 'papaya', 'strawberry']

# 2. 원본 객체를 수정하지 않는다.
> print(f_list)
sorted - ['orange', 'apple', 'mango', 'papaya', 'lemon', 'strawberry', 'coconut']
  • 다음으로 여러 key 값을 사용하여 sortsorted를 활용해보자.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# reverse = True
# 순서를 뒤집는다.
> print('sorted - ', sorted(f_list, reverse = True))
sorted - ['strawberry', 'papaya', 'orange', 'mango', 'lemon', 'coconut', 'apple']

> print('sort - ', f_list.sort(reverse = True), f_list)
sort - None ['strawberry', 'papaya', 'orange', 'mango', 'lemon', 'coconut', 'apple']


# key = len
# 단어 길이를 기준으로 정렬한다.
> print('sorted - ', sorted(f_list, key = len))
sorted - ['apple', 'mango', 'lemon', 'orange', 'papaya', 'coconut', 'strawberry']

> print('sort - ', f_list.sort(key = len), f_list)
sort - None ['apple', 'mango', 'lemon', 'orange', 'papaya', 'coconut', 'strawberry']

# key = lambda x: x[-1]
# 마지막 알파벳을 기준으로 정렬한다.
> print('sorted - ', sorted(f_list, key=lambda x: x[-1]))
sorted - ['papaya', 'orange', 'apple', 'lemon', 'mango', 'coconut', 'strawberry']

> print('sort - ', sort(f_list, key=lambda x: x[-1]), f_list)
sort - None ['papaya', 'orange', 'apple', 'lemon', 'mango', 'coconut', 'strawberry']

# key = lambda x: x[-1], reverse = True
# 마지막 알파벳을 기준으로 정렬한 후, 뒤집는다.
> print('sorted - ', sorted(f_list, key=lambda x: x[-1], reverse = True))
sorted - ['strawberry', 'coconut', 'mango', 'lemon', 'orange', 'apple', 'papaya']

> print('sort - ', sort(f_list, key=lambda x: x[-1], reverse = True), f_list)
sorted - None ['strawberry', 'coconut', 'mango', 'lemon', 'orange', 'apple', 'papaya']

 


2. Array data model

  • 1.Python data model 상세 분류에서 꺼냈던 Array data model에 대해 알아보자.

  • Array 자료형에 대해 알아보자.

  • Array의 구조는 다음과 같다.

    • Array(type code, [array 원소값])
    • 여기서 type code는 형 코드를 말하는데, 다음 대표 reference를 참조하자.
    • Array in docs.python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# array module을 가져오는 것부터 시작한다.
> import array

> chars = '+_)(*&^%$#@!~)'

# array module의 array method를 사용한다.
# ord: Return the Unicode code point for a one-character string
> array_g = array.array('I', (ord(s) for s in chars))

> print(type(array_g), array_g)
<class 'array.array'> array('I', [43, 95, 41, 40, 42, 38, 94, 37, 36, 35, 64, 33, 126, 41])

# .tolist(): array data type을 list로 바꿔주는 함수
> array_l = array_g.tolist()

> print(type(array_l))
<class 'list'>

> print(array_l)
[43, 95, 41, 40, 42, 38, 94, 37, 36, 35, 64, 33, 126, 41]

 

List vs Array 적합한 사용법

  • List 기반: 다양한 data type을 사용할 수 있기 때문에, 융통성 있게 범용적으로 사용 가능.
  • Array 기반: 한 가지 data type만 사용할 수 있기 때문에, 숫자 기반에 많이 사용한다.

Reference