티스토리 뷰

1. set

- 반복가능하고, 가변적이다

- 중복 요소가 없고 정렬되지 않은 컬렉션 데이터 타입이다.

- 인덱스 연산은 할 수 없다

- 멤버십 테스트 및 중복 항목 제거에 이용된다. 

- w집합과 관련된 자료형 

1
2
3
4
5
6
7
8
9
10
#집합 자료형
= {3,5,7}
print(s)
print(type(s))
"""
{3, 5, 7}
<class 'set'>
"""
 
 
cs

 

1.1 set 메서드 

-  intersection(), union(), difference()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
= {1,2,3,4,5}
= {2,3,4}
 
#교집합 
intersec = a.intersection(b)
print(intersec) #{2, 3, 4}
 
#합집합
uni = a.union(b) 
print(uni) #{1, 2, 3, 4, 5}
 
#차집합
diff = a.difference(b)  
print(diff) #{1, 5}
 
cs

 

 

2. list

- 크기를 동적으로 조정할 수 있는 배열

- 항목을 쉼표로 구분하고, 대괄호[]로 감싼다.

- 항목을 추가할 때, append()와 pop() 메서드 사용 >> 시간복잡도 O(1)

- remove(), index(), 멤버십테스트 in 등의 시간복잡도는 O(n)

- 검색이나 멤버십 테스트 시 빠른 속도가 필요하다면 셋이나 딕셔너리 같은 컬렉션 타입을 선택하는 것이 더 적합함 

 

* 리스트 O(1) 

- 동적인 배열

- 수정이 가능하며, 저장용량을 늘이거나 줄일 수 있다.

- 서로 이질적인 객체들의 모음 

- ** 리스트의 경우 데이터를 추가할 때 더 큰 크기으 새로운 리스트를 생성한 후 복사한다. 

- ** 여유 공간이 부족할 때만 할당과 복사가 이루어진다. 

 

 

 

3. Dictionary

이름을 0~15 사이의 정수값으로 매핑하는 해시 함수의 예. “John Smith”와 “Sandra Dee”라는 두 키 사이에 충돌이 존재한다. Jorge Stolfi - 자작

 

- 다른 언어의 해시 테이블 또는 뱁과 같다.

해시 함수(hash function) 

임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 

큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속

- 딕셔너리의 각 원소는 Key와 value 하나의 쌍으로 형성 

 

 

- A.get(key) : 딕셔너리 A의 key값을 반환 

- key 값이 존재하지 않으면 아무것도 반환하지 않음  

- A.pop(key) : 딕셔너리 A의 key 항목을 제거한 후 그 값을 반환 

 

1
2
3
4
5
6
7
8
9
10
11
12
trantion = {}
trantion['name'= "쿠엔틴 타란티노"
trantion['job'= "감독"
print(trantion) #{'name': '쿠엔틴 타란티노', 'job': '감독'}
print(trantion.get('name')) #쿠엔틴 타란티노
 
 
sunnydale = dict(name = "잰더", age = 17, hobby = "게임", address = "서울")
sunnydale.pop("age")
print(sunnydale) #{'name': '잰더', 'hobby': '게임', 'address': '서울'} 
 
 
cs

 

4. Tuple

- list와 비슷함

- 소괄호()로 표기

- 변경불가한 자료형 

- 쉼표(,)로 구분된 값으로 이루어지는 불변 시퀀스 타입 

* 튜플 O(n) 

- 정적인 배열

- 생성이 되면 배열의 크기뿐 아니라 그 안의 데이터도 변경할 수 있다.

- 튜플은 파이썬 런타임에서 캐싱하므로 사용할 때마다 커널에 메모리를 요청하지 않아도 됨 

- 메모리 오버헤드가 크지 않으며, 그에 대한 연산도 명료 

- 변치않는 특정 대상의 여러 속성 표현 

- ** 새로운 항목을 추가할 때마다 할당과 복사가 일어남 , 이때 여유 공간을 할당하지 않으면 자원을 더 적게 사용 

 

 

 

 

NOTE) 다음 데이터를 튜플과 리스트 중 어디에 저장해야한 것인가?

1. 처음 20번째까지의 소수? (A) 변하지 않는 정적 데이터이므로 튜플

2. 프로그래밍 언어의 종류? (A) 데이터가 계속 증가할 수 있으므로 리스트 사용

3. 사람의 나이, 몸무게 키? (A) 값 갱신 필요 리스트 

4. 사람의 생일과 출생자 (A) 변하지 않은 정적 데이터이므로 튜플

5. 당구게임의 결과 (A) 정적인 데이터이므로 튜플 

6. 잇단 당구게임의 결과? (A) 게임을 계속 플레이할 수 있으므로 리스트

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함