집합 set의 메소드
1. set
중복되는 요소가 없이, 순서에 상관없는 데이터들의 묶음
중복을 허용하지 않으므로 중복되는 원소가 있다면 하나만 저장함
순서가 없으므로 인덱스를 이용한 접근이 불가능하다
수학에서 집합을 표현한 자료형
>> 집합연산이 가능한데, 여집합을 나타내는 연산자는 별도로 존재하지 않아
>> 중복된 값이 존재하지 않아
담고 있는 요소를 삽입, 변경, 삭제가 가능함 >> 가변 자료형(mutable)
2. set의 메소드
리스트에서 append()를 쓰는것과는 다르게
set은 add로 추가한다는 점에서 add가 제일 중요하고.. 나머지도 알아보자고
set은 순서가 없는 자료형이기 때문에 s.pop()을 하면 랜덤하게 항목을 제거해서 반환한다고함
비슷하게 add()도 랜덤한 위치에 넣는다고 하는데
3. s.add()
set의 랜덤한 위치에 원소 하나를 추가한다
실행할때마다 결과가 다르다고 하는데 cmd에서는 다른것 같고 주피터노트북은 동일한디
4. s.update()
집합에 여러개의 원소를 한번에 추가함
넣을때 리스트나 set으로 넣어줘야 원하는대로 동작하는듯
5. s.remove()
set에 해당하는 원소를 삭제하고, 해당하는 원소가 없으면 key error
6. s.discard()
remove처럼 원소를 삭제하는데, 원소가 없다고해도 keyerror가 나지 않는다
------------------------------------------------------------------------------------
에러가 나냐? 안나냐??
remove()는 무조건 삭제하고 싶어, 삭제해야하는데 없다면 에러를 내는..
discard()는 알게모르게 지워지든 말든.. 삭제하는
의도적으로 에러를 내고 싶냐 아니냐의 차이인데
예를 들어 사이트에서 회원 삭제를 할때
회원 정보는 중복이 없을건데 이제 회원삭제할려고 하는데 삭제할 정보가 없는거..??
회원정보가 없다고 에러를 발생시켜야하냐?? 에러를 발생시키지 말아야하냐??
회원정보가 없다고 에러를 발생시키는게 낫겠지
7. s.pop()
집합 내에서 임의의 원소를 제거해 반환함
순서가 없기때문에 임의로 제거하게 됨
주피터 노트북은 왜 인지 모르겠는데 결과가 항상 동일함
cmd에서 실행해보면 결과가 항상 다름
8. s.clear()
집합내 원소를 모두 제거함
9. isdisjoint(), issubset(), issuperset()
s.isdisjoint(t)는 s와 t가 서로소이면(교집합이 존재하지 않음) True
s.issubset(t)는 s가 t의 하위 집합이면<s가 t의 부분집합> True
s.issuperset(t)는 s가 t의 상위집합이면<s가 t를 포함> True
'프로그래밍 > Python' 카테고리의 다른 글
opencv와 PIL이 이미지를 저장하는 방식의 차이 (0) | 2023.11.07 |
---|---|
시간을 줄이는 테크닉 - 파이썬에서 함수형 코드를 적극적으로 활용해야하는 이유(+ if __name__ == "__main__"의 활용?) (0) | 2023.08.13 |
딕셔너리의 메소드 (0) | 2022.08.01 |
객체지향프로그래밍이란 6편 -다형성,캡슐화- (0) | 2022.07.31 |
객체지향프로그래밍이란 5편 - 추상화, 상속 - (0) | 2022.07.31 |