연산 | 시간 복잡도 | 설명 |
---|---|---|
len(a) | O(1) | 전체 요소의 개수를 리턴한다. |
a[i] | O(1) | 인덱스 i의 요소를 가져온다. |
a[i:j] | O(k) | 인덱스 i부터 j-1까지 k개의 요소를 가져온다. |
elem in a | O(n) | elem 요소가 존재하는지 확인한다. |
a.count(elem) | O(n) | elem 요소의 개수를 리턴한다. |
a.index(elem) | O(n) | elem 요소의 위치(인덱스)를 리턴한다. |
a.append(elem) | O(1) | 리스트의 마지막 부분에 elem을 추가한다. |
a.pop() | O(1) | 리스트의 마지막 요소를 추출한다.(스택 연산) |
a.pop(0) | O(n) | 리스트의 첫번째 요소를 추출한다.(큐 연산) |
del a[i] | O(n) | 리스트의 i 인덱스 요소를 삭제한다. |
a.sort() | O(n log n) | 리스트를 정렬한다. |
min(a), max(a) | O(n) | 최솟값/최대값을 계산한다. |
a.reverse() | O(n) | 리스트를 뒤집는다. |
# 방법 1
a = list()
# 방법 2
a = []
파이썬 list에는 숫자 뿐만 아니라 다른 자료형도 추가할 수 있다.
ex) 문자열, 불리언
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
>>> a = [1, 2, 4]
>>> a.insert(2,3)
>>> a
[1, 2, 3, 4]
슬라이싱 기능으로 원하는 범위 안의 요소들을 가져올 수 있다.
>>> a = [1, 2, 3, 4]
>>> a[1:3]
[2, 3]
>>> a = [1, 2, 3, 4]
>>> a[:3]
[1, 2, 3]
>>> a = [1, 2, 3, 4]
>>> a[1:]
[2, 3, 4]
>>> a = [1, 2, 3, 4]
>>> a[1:4:2]
[2, 4]
>>> a = [1, 2, 3, 4, 5]
>>> del a[2]
>>> a
[1, 2, 4, 5]
>>> a = [1, 2, 3, 4, 5]
>>> a.remove(4)
>>> a
[1, 2, 3, 5]
>>> a = [1, 2, 3, 4, 5]
>>> a.pop(2)
3
>>> a
[1, 2, 4, 5]
연산 | 시간 복잡도 | 설명 |
---|---|---|
len(a) | O(1) | 전체 요소의 개수를 리턴한다. |
a[key] | O(1) | 키를 조회해서 값을 리턴한다. |
a[key] = value | O(1) | 키/값을 삽입한다. |
key in a | O(1) | 딕셔너리에 해당 키가 존재하는지 확인한다. |
# 방법 1
a = dict()
# 방법 2
a = {}
a = {'key1' : 'value1', 'key2' : 'value2'}
a['key3'] = 'value3'
>>> a = {'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3'}
>>> a['key2']
value2
a = {'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3'}
for k,v in a.items():
print(k,v)
key1 value1
key2 value2
key3 value3
존재하지 않는 key의 값을 조회하려고 하면 에러가 발생한다. 이에 대한 예외 처리를 하면 유용하다.
a = {'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3'}
try:
print(a['key4'])
except:
print('존재하지 않는 키입니다.')
a = {'key1' : 'value1', 'key2' : 'value2', 'key3' : 'value3'}
if 'key4' in a:
print(a['key4'])
else:
print("존재하지 않는 키입니다.")
: 존재하지 않는 키 값을 조회하는 경우, 에러를 출력하는 대신에 설정한 디폴트 값으로 딕셔너리 아이템을 생성한다.
int의 경우는 0이 디폴트 값이다.
list의 경우는 빈 리스트가 만들어진다. 값을 지정하면 해당값으로 초기화된다.
>>> a = collections.defaultdict(int) # 원하는 자료형으로 생성한다.
>>> a['A'] = 5
>>> a['B'] = 4
>>> a['C'] += 1
>>> a
defaultdict(<class 'int'>, {'A': 5, 'B': 4, 'C': 1})
: 아이템의 개수를 딕셔너리 형태로 변환하여 리턴한다.
키에는 아이템의 값, 값에는 아이템의 개수가 저장된다.
>>> a = [1,2,3,4,5,5,5,6,6]
>>> b = collections.Counter(a)
>>> b
Counter({5: 3, 6: 2, 1: 1, 2: 1, 3: 1, 4: 1})
>>> b.most_common(2) # 빈도가 높은 2개 요소 출력
[(5, 3), (6, 2)]
: 입력한 순서 그대로 순서가 유지된다.
>>> collections.OrderedDict({'key1' : 'value1',
'key2' : 'value2', 'key3' : 'value3'}))
OrderedDict([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')])
파이썬 3.7부터는 내부적으로 인덱스를 이용해 입력 순서가 유지되어 해당 객체는 더이상 사용할 필요는 없다.
<파이썬 타입 선언>
- 이름으로 선언
>>> a = list() >>> type(a) <class 'list'>
- 기호로 선언
>>> type([]) <class 'list'> >>> type(()) <class 'tuple'> >>> type({}) <class 'dict'> >>> type({1}) <class 'set'>