이번 시간에는 데이터에 대한 조작 (min/max 구하기, 데이터의 size, 데이터 변환)을 할 때 주로 사용되는 Python 함수를 알아보겠습니다.
print(type([7, 5, 2, 3, 6])) # => <class 'list'>
print(type(5)) # => <class 'int'>
print(type(3.14)) # => <class 'float'>
print(type(True)) # => <class 'bool'>
print(type("True")) # => <class 'str'>
type 함수를 통해 파라미터의 데이터 타입이 리턴됩니다. 시간 복잡도 O(1)
print(max(2, 5)) # => 5
print(max(2, 7, 5)) # => 7
print(min(2, 5)) # => 2
print(min(2, 7, 5, 11, 6)) # => 2
max, min 함수의 시간 복잡도는 O(n) 입니다. (모든 엘리먼트의 요소를 전부 비교하기 때문)
my_str = str(257138)
print(my_str) # => 257138
print(type(my_str)) # => <class 'str'>
str 함수를 통해 숫자를 문자열로 나타낼 수 있습니다.
my_list = [7, 5, 2, 3, 6]
my_list.append(9) # 끝에 9 추가
print(my_list) # => [7, 5, 2, 3, 6, 9]
my_list.insert(2, 11) # 2번 인덱스에 11 추가
print(my_list) # => [7, 5, 11, 2, 3, 6, 9]
del my_list[2] # 2번 인덱스 값 삭제
print(my_list) # => [7, 5, 2, 3, 6, 9]
my_index = my_list.index(9) # 리스트에서 9의 인덱스
print(my_index) # => 5
my_list.reverse() # 리스트 뒤집기
print(my_list) # => [9, 6, 3, 2, 5, 7]
append 함수는 리스트의 맨 끝에 새로운 값이 추가됩니다. 즉 맨 끝에 한번만 데이터를 조작하면 되므로 O(1)
insert, del, index, reverse는 모두 O(n) 입니다.
my_list = [7, 5, 2, 3, 6]
print(sorted(my_list)) # => [2, 3, 5, 6, 7]
print(my_list) # => [7, 5, 2, 3, 6]
my_list.sort()
print(my_list) # => [2, 3, 5, 6, 7]
sort 메소드와 sorted 함수는 리스트를 정렬시킵니다. sorted 함수를 사용하면 정렬된 New List가 return되고, sort 메소드는 그 리스트 자체를 정렬시켜 줍니다.
두 메소드의 시간 복잡도는 모두 O(n * log n)입니다.
my_list = [7, 5, 2, 3, 6]
print(my_list[1:4]) # => [5, 2, 3]
print(my_list[:4]) # => [7, 5, 2, 3]
print(my_list[1:]) # => [5, 2, 3, 6]
print(my_list[:]) # => [7, 5, 2, 3, 6]
print(my_list[::2]) # => [7, 2, 6]
리스트 슬라이싱을 통해 리스트의 일부를 받아 올 수 있습니다. 리스트 슬라이싱의 시간 복잡도는 범위 길이에 비례합니다
my_list[a:b]를 하면 시간 복잡도는 O(b - a) 입니다.
my_list = [7, 5, 2, 3, 6]
my_dict = {'a': 2, 'b': 3, 'c': 5, 'd': 7}
my_string = 'hello world'
print(len(my_list)) # => 5
print(len(my_dict)) # => 4
print(len(my_string)) # => 11
len 함수를 통해 리스트, dictionary, String의 길이가 리턴됩니다. 시간 복잡도 O(1)