본문 바로가기
내가 공부하려고 올리는/알고리즘

파이썬 - 리스트/튜플/사전/집 자료형

by 결딴력 2022. 4. 20.
반응형

 

 

리스트

리스트는 여러 개의 데이터를 연속적으로 담아 처리하기 위해 사용할 수 있다.

 

 

리스트 만들기

 

1. 초기화와 생성을 동시에

a = [1, 2, 3, 4]

 

2. 빈 리스트 생성

a = list()
b = []

 

 

리스트 슬라이싱

- 연속적인 위치를 갖는 원소들을 가져와야 할 때 사용할 수 있다.

- 대괄호 안에 콜론(:)을 넣어서 시작인덱스와 끝 인덱스를 설정할 수 있다.

 

a = [1, 2, 3, 4, 5, 6]
print(a[1 : 4])

- 결과 : [2, 3, 4]

   -> 시작 인덱스부터 끝 인덱스의 -1까지 출력

 

 

리스트 길이구하기

a = [1, 2, 3, 4, 5]
len(a)

 

 

 

리스트 컴프리헨션

- 리스트를 초기화하는 방법 중 하나

- 대괄호([]) 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화

 

#1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [ i * i for i in range(1, 10) ]

# N * M 크기의 2차원 리스트 초기화
n = 3
m = 4

array = [[0] * m for _ in range(n)]
for i in range(len(array)) :
  for j in range(len(array[i])) :
    print(array[i][j], end=" ")
  print()

- 결과

2차원 배열

 

 

리스트 관련 메서드 시간 복잡도 정리

append() O(1)
sort() O(NlogN)
reverse() O(N)
insert() O(N)
count() O(N)
remove() O(N)

- insert() 함수를 남발하면 시간 초과 가능성이 👆

 

 

리스트에서 특정한 값의 원소를 모두 지우려면?

a = [1, 2, 3, 4, 5, 5, 5]
remove_set = {3, 5}

# remove_set에 포함되지 않은 값만 저장
result = [ i for i in a if i not in remove_set ]

 

 

튜플과 리스트의 차이점?

- 리스트는 []를 사용 / 튜플은 ()을 사용

- 튜플은 리스트와 달리 한 번 생성되면 값을 바꿀 수 없다.

 

 

튜플 생성 및 초기화

a = ()
b = (1, )
c = ('a', 'b')
d = 1, 2, 3, 4

- 1개의 요소만을 가질 때 요소 뒤에 콤마(,)를 반드시 붙여야 한다.

- 괄호를 생략하고 작성할 수 있다.

 

 

튜플 자료형의 사용처

- 그래프 알고리즘 구현할 때 자주 사용

- 다익스트라 최단 경로 알고리즘처럼 최단 경로를 찾아주는 알고리즘의 내부에서는 우선순위 큐를 이용

- 해당 알고리즘에서 우선순위 큐에 한 번 들어간 값은 변경되지 않는다.

 

 

 

사전 자료형이란?

- 키(key)와 값(value)으로 구성된 자료형

- 변경 불가능한 데이터를 키로 사용할 수 있다.

- 내부적으로 해시 테이블을 이용하므로 기본적으로 데이터의 검색 및 수정에 있어서 O(1)의 시간 복잡도를 갖는다.

- 사용 방법

a = {'name' : 'determination', 'age' : '10'}

 

 

사전 자료형의 키를 리스트로 만들기

a = {'name' : 'determination', 'age' : '10'}

 

- print(list(a.keys()))

 

- print(a.key())

 

- dict_keys 객체는 기본적인 반복 구문(예 : for문)에 사용할 수 있다.

- dict_keys 객체는 리스트 고유의 append, insert, pop 등의 함수를 사용할 수 없다.

 

 

사전 자료형의 value를 리스트로 만들기

a = {'name' : 'determination', 'age' : '10'}

 

사전 자료형의 쌍 얻기/지우기

- 얻기

a.items()

- 지우기

a.clear()

 

 

집합 자료형의 특징

- 중복을 허용하지 않는다.

- 순서가 없다.

- 순서가 없기 때문에 인덱싱을 제공하지 않는다.

- 집합 자료형에서 특정 원소가 존재하는지 검사하는 연산의 시간 복잡도는 O(1)이다.

 

 

 

집합 자료형의 합집합/교집합/차집합

a = set([1, 2, 3, 4])
b = set([3, 4, 5, 6])

#합집합
print(a|b)
#교집합
print(a&b)
#차집합
print(a-b)

- 결과

 

 

 

 


출처 : 점프 투 파이썬, 이것이 코딩 테스트다(나동빈)

반응형

댓글