[Py] 자료형

mj·2022년 6월 22일
0

Python

목록 보기
1/4

🌀 리스트

1. 리스트 만들기

# 빈 리스트 선언 방법 1
a = list()

#빈 리스트 선언 방법 2
a = []

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

#크기가 N이고, 모든 값이 0인 1차원 리스트 초기화
n = 10
a = [0] * n
#결과 : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

2. 리스트 슬라이싱

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

#두번째 원소부터 네 번째 원소까지
print(a[1:4])

3. 리스트 컴프리헨션

리스트 컴프리헨션은 리스트를 초기화하는 방법 중 하나이다.

# 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
array = [i for i in range(20) if i % 2 == 1]
#결과 : [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

# 1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i*i for i in range(1, 10)]
#결과 : [1, 4, 9, 16, 25, 36, 49, 64, 81]

N X M 크기의 2차원 리스트 초기화

n = 3
m = 4
array = [ [0]*m for _ in range(n) ]

#결과 : [ [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0] ]

특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션을 이용해야 한다.

4. 리스트 관련 메서드

append() : 리스트에 원소를 하나 삽입할 때 사용
a.append()

sort() : 기본 정렬 기능으로 오름차순으로 정렬한다.
a.sort(reverse=True) : 내림차순으로 정렬

reverse() : 리스트의 원소의 순서를 뒤집어 놓는다.
a.reverse()

insert() : 특정한 인덱스 위치에 원소를 삽입할 때 사용
a.insert(삽입할 위치 인덱스, 삽입할 값)

count() : 리스트에서 특정한 값을 가지는 데이터의 개수를 셀 때 사용
a.count(특정 값)

remove() : 특정한 값을 갖는 원소를 제거, 값을 가진 원소가 여러 개면 하나만 제거한다.
a.remove(특정 값)

시간복잡도

  • append() : O(1)
  • insert() : O(N)
  • remove() : O(N)

insert()와 remove()는 리스트의 원소 위치를 조정해줘야 하기 때문에 append()에 반해 동작이 느리다. 따라서 insert()함수를 남발하면 코테에서 '시간초과'가 날 수 있다.

특정한 값의 원소를 '모두' 제거하는 법

remove()의 경우 하나만 제거하므로 다음과 같은 방법을 이용하면 모두 제거할 수 있다.

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]

#결과 : [1, 2, 4]

🌀 문자열 자료형

파이썬의 문자열은 내부적으로 리스트와 같이 처리된다. 문자열은 여러 개의 문자가 합쳐진 리스트라 볼 수 있다.
따라서 문자열도 인덱싱과 슬라이싱을 이용 가능하다.

a = "ABCDEF"

print(a[2:4])

#결과: CD

🌀 튜플 자료형

❗️튜플과 리스트의 차이점

  • 튜플은 한 번 선언된 값을 변경할 수 없다.
  • 리스트는 대괄호[]를 이용하지만, 튜플은 소괄호()를 이용한다.

🌀 사전 자료형

사전 자료형 : 키와 값의 쌍을 데이터로 가지는 자료형
리스트나 튜플은 값을 순차적으로 저장한다.
사전 자료형은 키-값 쌍을 데이터로 가진다는 점에서, 우리가 원하는 변경 불가능한 데이터를 키로 사용할 수 있다.
(변경 불가능한 자료형 : 수 자료형, 문자열 자료형, 튜플 자료형과 같이 한 번 초기화되면 변경이 불가능한 자료형을 의미)

data = dict()

data['사과'] ='Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

print(data)

# 결과 : {'사과': 'Apple'. '바나나': 'Banana', '코코넛': 'Coconut'}

사전자료형에 특정한 원소가 있는지 검사할 때 :

원소 in 사전 : 리스트나 튜플에서도 사용할 수 있는 문법

data = dict()

data['사과'] ='Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

if '사과' in data:
	print("'사과'를 키로 가지는 데이터가 존재")

사전 자료형 관련 함수

keys() : 키 데이터만 뽑아서 리스트로 이용할 때

values() : 값 데이터만을 뽑아서 리스트로 이용할 때

data = dict()

data['사과'] ='Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

#키 데이터만 담은 리스트
key_list = data.keys()
#값 데이터만 담은 리스트
value_list = dat.values()

🌀 집합 자료형

❗️집합의 특징

  • 중복을 허용하지 않는다.
  • 순서가 없다.

사전자료형과 집합자료형은 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.
집합자료형에서는 키가 없고 값 데이터만을 담게 된다. 특정 원소가 있는지 검사하는 연산의 시간복잡도는 사전자료형과 마찬가지로 O(1)이다.

집합 자료형 초기화 방법

# 집합 자료형 초기화 방법 1
data = set([1, 1, 2, 3, 4, 4, 5])
print(data)

# 집합 자료형 초기화 방법 2
data = {1, 1, 2, 3, 4, 4, 5}
print(data)

#결과 : {1, 2, 3, 4, 5}

집합 자료형의 연산

  • 합집합&
  • 교집합|
  • 차집합-
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])

print(a | b) #{1, 2, 3, 4, 5, 6, 7}
print(a & b) #{3, 4, 5}
print(a - b) #{1, 2}

집합 자료형 관련 함수

add() : 하나의 집합 데이터에 값을 추가
ex) data.add(4)

update() : 여러 개의 값을 한꺼번에 추가
ex) data.update([5, 6])

remove() : 특정한 값을 제거
ex) data.remove(3)

시간복잡도

add(), remove()함수는 모두 시간복잡도가 O(1)

profile
일단 할 수 있는걸 하자.

0개의 댓글