python__[리스트]

Jaewon Lee·2021년 6월 1일
0

Algorithm

목록 보기
12/36
post-thumbnail

On.


리스트


1) 리스트 선언

a = []
a = list()

2) 리스트 연산

1. 리스트 더하기

a = [1, 2, 3]
b = [4, 5, 6]
a + b
[1, 2, 3, 4, 5, 6]

2. 리스트 반복하기

a = [1, 2, 3]
a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

3) 리스트 인덱싱과 슬라이싱

1. a[i]
시간 복잡도 : O(1)
인덱스 i의 요소를 가져온다.

2. a[i:j]
시간 복잡도 : O(k)
i부터 j까지 슬라이스의 길이 만큼인 k개의 요소를 가져온다. 이 경우 객체 k개에 대한 조회가 필요하므로 O(k)이다.

3. a[i:j:k]
인덱스 i부터 j까지의 요소를 k 간격으로 추출한다.

4. a[::-1]
리스트를 거꾸로 뒤집는다.

4) 리스트 관련 함수

1. len(a)
시간 복잡도 : O(1)
전체 요소의 개수를 리턴한다.

2. elem in a
시간 복잡도 : O(n)
elem 요소가 존재하는지 확인한다. 처음부터 순차 탐색하므로 n만큼 시간이 소요된다.

3. a.count(elem)
시간 복잡도 : O(n)
elem 요소의 개수를 리턴한다.

4. a.index(elem)
시간 복잡도 : O(n)
elem 요소의 인덱스를 리턴한다.

5. a.append(elem)
시간 복잡도 : O(1)
리스트 마지막에 elem 요소를 추가한다.

6. a.pop()
시간 복잡도 : O(1)
리스트 마지막 요소를 추출한다. 스택의 연산이다.

7. a.pop(0)
시간 복잡도 : O(n)
리스트 첫번째 요소를 추출한다. 큐의 연산이다. 이 경우 전체 복사가 필요하므로 O(n)이다. 나중에 다시 살펴보겠지만 큐의 연산을 주로 사용한다면 리스트보다는 O(1)에 가능한 데크(deque)를 권장한다.

8. del a[i]
시간 복잡도 : O(n)
i에 따라 다르다. 최악의 경우 O(n)이다.

9. a.sort()
시간 복잡도 : O(nlogn)
팀소트를 이용하여 정렬한다. 최선의 경우 O(n)에도 실행될 수 있다.

10. min(a), max(a)
시간 복잡도 : O(n)
최솟값/최대값을 계산하기 위해서는 전체를 선형 탐색해야 한다.

11. a.reverse()
시간 복잡도 : O(n)
리스트를 뒤집는다.

5) 존재하지 않는 인덱스를 조회시 예외처리

  • 존재하지 않는 인덱스를 조회할 경우 IndexError가 발생한다. 이럴 경우 try 구문으로 에러에 대한 예외 처리를 할 수 있다.

ex.

a = [1, 2, 3, 4]
try:
    print(a[9])
except IndexError:
    print("존재하지 않는 인덱스")

>> 
존재하지 않는 인덱스

6) insert()

  • 특정 위치의 인덱스를 지정해 요소를 추가할 수 있다.
a = [1, 2, 3, 4]
a.insert(3, 5)

>> a
[1, 2, 3, 5, 4]

7) 리스트에서 요소를 삭제

  • 인덱스로 삭제하거나, 값으로 삭제하는 방법이 있다.
  • delpop은 해당 인덱스에 있는 값을 삭제한다.
  • remove는 해당 값을 찾아 삭제한다.

ex.

a = [1, 2, 3, 4, 5, 6]

>> del a[0]
[2, 3, 4, 5, 6]

>> a.pop(2)
[2, 3, 5, 6]

>> a.remove(6)
[2, 3, 5]


Off.


프로그래머스 랭킹 100위 진입 가즈아!!!🔥🔥🔥

profile
Communication : any

0개의 댓글