파이썬의 리스트의 문법에 대해서 알아보자.

코린이서현이·2024년 4월 28일
0

🤗 들어가면서

이전 정리 글

파이썬의 리스트

파이썬의 리스트 특징

  • 동적 배열이다. 크기를 미리 지정하지 않고도 사용할 수 있다.
  • 다양한 자료형을 담을 수 있다.

👍 파이썬의 리스트는 크기가 동적으로 할당되어 요소를 추가할때마다 새로운 공간을 할당해야한다.
따라서 파이썬의 리스트의 크기를 최대치로 미리 확보하면 오버헤드를 줄일 수 있다.

a_list = [0] * 100000

파이썬 리스트 문법

파이썬 리스트 생성

위에서 말했던 것처럼 메모리 재할당 과정을 줄이기 위해 크기를 미리 크게 지정해 줄 수 있다.

a_list = [0]*100000


#아래 코드는 빈 리스트 []를 100번 반복해서 연결하는 코드로 결과는 빈 리스트이다.
b_list = [] * 100

파이썬 리스트 연산

  • + : 2개이상의 리스트를 하나의 리스트로 합쳐준다.
  • *: 리스트를 반복에서 하나의 리스트로 만들어준다.

파이썬 리스트의 슬라이싱과 인덱스

my_list[시작:(:스텝)]
# 시작부터 (끝 - 1)까지 슬라이싱한다.

슬라이싱과 인덱스를 이용한 수정과 삭제

  • 슬라이싱을 이용해서 파이썬을 수정하거나 삭제할 수 있다.
  • ⭐ 인덱스 값으로 수정하는 것과 슬라이싱을 해서 수정한 결과가 다르니 유의하자.
    인덱스로 하면 해당 요소가 배열로 바뀌고 슬라이싱을 하면 리스트로 합쳐진다.
a_list = [1,2,3]

a_list[:1] = [4,5]
>>> [4, 5, 2, 3]

a_list[0] = [7,8,9]
>>> [[7, 8, 9], 5, 2, 3]

⚠️ 존재하지 않는 인덱스

존재하지 않는 인덱스로 접근할 경우 오류가 난다.

파이썬의 리스트 시간 복잡도

연산시간복잡도설명
len(a)O(1)전체 요소의 개수를 리턴한다.
a[i]O(1)인덱스 i의 요소를 가져온다.
a[i:j]O(j-i)i부터 j전까지의 요소를 가져온다.
x in listO(n)x가 존재하는지 확인한다.
a.count(x)O(n)x의 개수를 리턴한다.
a.index(x)O(n)x의 인덱스를 리턴한다.
a.append(x)O(1)마지막에 x를 추가한다.
a.pop()O(1)마지막 요소를 추출한다.
a.pop(0)O(n)첫번째 요소를 추출한다. 이럴 경우 리스트보다는 deque를 권장한다.
del a[i]O(n)최악의 경우 n이다.
a.sort()O(n log n)정렬한다.
min(a), max(a)O(n)선형 탐색이 필요하다.
a.reverse()O(n)뒤집는다.

⭐ 파이썬에서 자료형의 선택 기준

순서가 필요하고, index의 값을 사용해야할 경우 List를 사용하자.
검색이 필요한 경우 set, Dictionary를 사용하자.

자료구조접근탐색삽입삭제
배열O(1)O(n)O(n)O(n)
스택O(n)O(n)O(1)O(1)
O(n)O(n)O(1)O(1)
링크드 리스트O(n)O(n)O(1)O(1)
해시테이블N/AO(1)O(1)O(1)
이진 탐색 트리O(log n)O(log n)O(log n)O(log n)
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글