set(집합): 특정한 conditions를 만족시키는 구별가능한 object의 collection
- mutable
- un-ordered(순서가 없음)
- 동일한 element포함 불가능
python에서 set은 dict과 함께 curly bracket{}을 사용한다.
ex)
출력값
<class 'dict'>
<class 'set'>
*empty_set=set()
empty_dict={}
empty set, empty dict 차이 명확히 할 것.
set도 curly bracket으로 나타내지만 empty set은 set()으로 dictionary와 차이가 있다.
frozenset: 값의 변경이 이루어지지 않도록 고정된 경우.
- immutable
- frozenset([arg1,arg2,arg3)]로 생성됨.
- 생성시 인자로 iterable을 요구함.
Operation and Methods for 'set' and 'frozenset'
- union: 합집합 (a|b)
- difference: 차집합 (a-b)
- intersection: 교집합 (a&b)
- symmetric difference: 대칭차집합 (a^b)=(a-b)|(b-a)
출력값
{1, 2, 3, 4, 5}
{1}
{2, 3}
{1, 4, 5}
- print(A <= B): A가 B의 부분집합인지 여부를 확인함. A.issubset(B). A의 모든 원소가 B에 포함되면 True를 반환함.
- print(A < B): A가 B의 진부분집합인지 여부를 확인함. A.issubset(B)에서 같지 않음을 추가로 확인함. A의 모든 원소가 B에 포함되고, B에 A에는 없는 원소가 있을 경우 true를 반환함.
- print(A >=B): A.issuperset(B). A가 B의 상위집합인지 여부를 확인함. B의 모든 원소가 A에 포함되면 true 반환함.
- print(A > B): 진 superset(진상위집합) 여부를 확인함. A.issuperset(B)와 같지만, A가 B와 같지 않음을 추가로 확인함. B의 모든 원소가 A에 포함되고, A에 B에는 없는 원소가 있을 경우 true를 반환함.
출력값
True
True
False
False
- A.isdisjoint(B): 두 집합이 공통으로 가지고 있는 element가 없는지 여부 확인. 없으면 true반환.
출력값
False #두 집합이 공통으로 가지는 element(2,3)가 있으므로 false이다.
Operations and Methods for set
*해당 method들은 대상 object을 변경시키기 때문에 immutable인 frozenset에서는 사용불가.
*set.pop(): 제일 먼저 들어간 element가 제일 먼저 튀어나옴.
stack에서의 pop: FILO(First-In-Last-Out), 처음으로 들어간 element가 마지막에 나옴.
dictionary
- key-value pair를 item으로 가짐.
- unordered
- mutable
set과 함께 curly bracket{} 사용.
dictionary는 key와 value가 하나의 item이고, 해당 key를 통한 indexing이 가능하다.
- immutable object만이 key가 될 수 있음
- mutable object은 hashable이지 않음.
- hash: 데이터(보통 문자열이나 파일 등)을 고정된 길이의 고유한 값으로 변환하는 과정이다. 해시는 주로 데이터의 무결성을 확인하거나 빠른 데이터 검색을 위해 사용된다. hash객체는 immutable해야함.
input을 넣었을 때 일정한 output이 나와야함. - hashable: 파이썬에서 객체가 해시 가능한지를 나타내는 개념.
'해시가능'-객체가 고유한 해시 값을 가질 수 있으며, 이를 통해 객체를 키로 사용할 수 있다는 것을 의미함.
- hash: 데이터(보통 문자열이나 파일 등)을 고정된 길이의 고유한 값으로 변환하는 과정이다. 해시는 주로 데이터의 무결성을 확인하거나 빠른 데이터 검색을 위해 사용된다. hash객체는 immutable해야함.
dictionary는 기본적으로 square bracket과 key를 통해 item에 접근할 수 있다.
- dic_name[new_key]=value: 새로운 키를 이용한 assignment를 통해 새로운 key-value pair가 추가됨.
- dic_name[exist_key]=new_value: 기존에 존재하는 키를 이용한 assignment는 해당 키에 해당하는 value를 새로운 값으로 교체함.
- del dic_name[exist_key]: 해당 키에 해당하는 key-value pair를 dictionary에서 제거한다. 만약 지정한 키가 없다면, KeyError가 발생한다.
dictionary는 key를 통해 indexing이 이루어지므로 in membership operator 사용 시 key들에 대한 확인이 이루어짐.
dictionary's method
비우기
- dic_name.clear()
- 'dic_name' dictionary의 모든 object을 지움.
값 얻어오기
- dic_name.get(key)
- key에 해당하는 키를 가지고 있는 value를 반환. 만약 없다면 None이 반환됨.
- square bracket은 에러가 발생하지만, 위는 에러가 발생하지 않음.
빼내면서 값 얻어오기
- dic_name.pop(key)
- key에 해당하는 value를 반환하고, dict에서 해당 key-value pair를 제거함.
추가하면서 값 얻어오기
- dic_name.setdefault(key)
- key에 해당하는 value를 반환.
- dic_name.setdefault(key,value)
- key에 해당하는 value가 있으면 dic_name.setdefault(key)와 동일
- key에 해당하는 value가 없으면, value를 반환하고 해당 key-value pair를 dictionary에 추가함.
다른 dictionary object으로 갱신
Loop(iteration)
출력값
key is a
key is b
key is c
value is 1
value is 2
value is 3
key is a, value is 1
key is b, value is 2
key is c, value is 3
key is a
key is b
key is c
*'3+5'에서 3,5는 operand이고 +는 operator이다. operator는 operand를 작동한다.
'컴퓨터프로그래밍' 카테고리의 다른 글
Iterator, Generator (0) | 2024.06.01 |
---|---|
Comprehension (0) | 2024.05.31 |
function (2) | 2024.05.22 |
sys (3) | 2024.05.21 |
class (0) | 2024.05.20 |