python

python 기본 문법 정리 - 자료형

귀건 2021. 3. 8. 02:14
728x90
반응형

'나동빈' 저자의 이코테 책의 파이썬 문법이 정리된 내용을 바탕으로 공부 한 내용을 적어둘 것이다....

 

리스트 컴프리헨션

리스트 초기화 방식 중 하나, 반복문과 조건문을 대괄호 안에 작성하여 리스트를 초기화 한다.

0부터 9까지의 원소를 담는 리스트를 만들기 위해서는 a = [i for i in range(0, 10] 로 초기화 하면된다.

 

또, 0부터 19까지 중 홀수만 담는 리스트를 만들고자 한다면 a = [i for i in range(0,20) if i %2 != 0] 로 초기화 할 수 있다.

 

2차원 리스트를 초기화 할 때도 리스트 컴프리헨션을 사용한다. 리스트 컴프리헨션을 사용하지 않고 *을 통해 이차원 리스트를 초기화 할 경우 문제가 생긴다.

 

리스트 컴프리헨션으로 초기화. 

n = 3
m = 4

a = [[0] * m for _ in range(n)]

잘못된 방법.

n = 3
m = 4

a = [[[0] * n] * m]

 잘못된 방법으로 초기화할경우 사용할 때 문제가 발생할 수 있다. 잘 초기화 된 것 같아보이지만, 실제로 새로운 값을 하나의 인덱스에 넣어보면 문제를 확인할 수 있을 것이다.

 

리스트 메소드

리스트 관련 메소드 중 주요 메소드는 append, sort, reverse, insert, count, remove가 있다.

append, insert, remove의 시간 복잡도를 살펴볼 필요가 있다.

insert의 경우 해당하는 자리를 찾고, 그 자리에 삽입한 이후에 다른 원소들을 하나씩 뒤로 밀어주기 때문에 O(n)이다.

remove도 insert와 동일한 매커니즘으로 원소를 조정하기 때문에 O(n)이다.

그에 반해, append는 단순히 마지막 자리에 원소를 추가하기 때문에 O(1)이다. 따라서 remove와 insert는 효율이 좋지 못하다고 할 수 있다.

 

remove를 사용하지 않고 특정한 값을 가지는 모든 원소 삭제

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

result = [i for i in a if i not in remove_set]
print(result)

 

튜플 자료형

튜플 자료형은 리스트와 거의 동일하지만, 한번 선언된 값을 변경하지 못한다. 또한 리스트는 대괄호를 이용하지만 튜플은 소괄호를 이용한 다는 점에서 차이점이 있다.

튜플은 리스트에 비해 상대적으로 공간 효율적이고, 원소의 성질이 서로 다를 때 주로 사용한다. 다익스트라 알고리에서 비용과 노드번호라는 다른 성질의 데이터를 (비용, 노드 번호)로 튜플로 묶어 관리하는 것이 관례이다.

 

사전 자료형

키와 값을 쌍으로 가지는 자료형이다. 리스트나 튜플은 값을 순차적으로 저장하지만, 파이썬의 사전자료형은 해시테이블을 통해 검색과 수정을 O(1)에 마칠 수 있다.

 

키데이터만 뽑아서 이용하기 위해서는 keys()함수를 사용하고 값데이터를 뽑아서 리스트로 이용할때는 values()함수를 이용한다.

 

집합 자료형

집합을 처리하기 위한 집합 자료형은 리스트 혹은 문자열을 이용해서 만들 수 있다. 집합은 중복을 허용하지 않고, 순서가 없다. 

 

'특정 데이터가 이미 등장한 적 있는지 여부를 체크' 할때 매우 효과적이다.

 

집합 자료형의 연산

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

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

 

집합 자료형 관련 함수

data = set([1, 2, 3])
print(data)

data.add(4)
print(data)

data.update([5, 6])
print(data)

data.remove(3)
print(data)
728x90
반응형