튜플 : immutable(불변한)
리스트에 비해 가능한 메소드
빈 튜플(empty tuple)
비어있는 빈 튜플을 만들 때는 소괄호(())만 쓰거나 인자없는 tuple 함수를 사용하면 됩니다.
empty_tuple = tuple()
print(empty_tuple)
print(type(empty_tuple))
제너레이터 컴프리헨션(comprehension)
소괄호로 된 아래 표현식은 튜플이 아닌 제너레이터 컴프리헨션이 된다.
제너레이터도 반복 가능한 객체로 tuple() 함수를 사용하면 제너레이터 객체를 tuple로 만들 수 있습니다.
- generator_variable = (expression for x in range(10))
- tuple(expression for x in range(10))
generator_variable = (expression for x in range(10)) print(generator_variable) # class 'generator' hasattr(generator_variable, "__iter__") # True, 반복이 가능한 객체인지 묻는 함수
- 제너레이터에 관한 설명 링크
random 라이브러리
임의의 수를 생성할 때 사용하는 표준 라이브러리입니다. 표준 라이브러리는 파이썬에 기본으로 설치된 모듈과 패키지, 내장함수를 묶어서 파이썬 표준 라이브러리(Python Standrad Library, PSL)이라고 합니다.
random.randint(시장정수, 끝정수) 함수를 활용하면 시작 정수 (포함)부터 끝 정수(포함)까지 범위의 난수를 생성할 수 있습니다.
import random random_list = [random.randint(1,2) for _ ini range(10)] print(random_list)
세트 자료형
세트 자료형(Set)
수학에 나오는 집합을 영어로 set이라고 합니다. 그 집합과 set 자료형은 맥락이 같습니다. 합집합, 교집합, 차집합과 같은 처리가 가능합니다. 세트는 딕셔너리(Dictionary)처럼 중괄호({})를 사용해서 생성합니다.
세트 자료형은 인덱스를 갖지 않습니다. 이 자료형에서 요소는 키와 값 역할 모두 한다고 생각하면 됩니다. 앞서 딕셔너리 자료형에서 키는 중복이 되지않는다고 했습니다. 왜냐하면 키가 고유해야 특정 값에 접근 할 수 있기 때문입니다. 그래서 세트에서 키는 같은 특징을 같습니다. 즉 요소 내 중복된 값을 같지 않으며 순서가 없습니다.
세트 자료형(Set) - 빈 세트 생성하기
앞서 배웠던 딕셔너리에서 빈 값을 만드려면 중괄호만 써서 생성할 수 있습니다. 그걸 기억한다면 빈 세트 만드는 건 비어있는 중괄호로 가능하지 않다는 걸 알 수 있습니다. 결론말 말하면 빈 세트는 빈 set() 함수로 만듭니다.
print(type({}))
### class 'dict
print(set())
### set()
세트 자료형 특징
이름이 고유해야 불러올 수 있다고 하면서 키에 대한 설명을 드렸어씃ㅂ니다. 세트 자료형의 요소는 키와 같은 성경글 갖기에 중복된 요소를 가지지 않습니다. 즉 세트 자료형 내에는 동일한 요소가 존재치 않도록 설계되었습니다. 같은 값을 여럿 넣어도 단 하나만 존재합니다. 키는 중복될 수 없으니까요.
세트 자료형 컴프리헨션
set_variabe = {expression for 변수 in iterable if 조건식}
세트에 값 넣는 방법 add()
세트 메서드로 add()가 있습니다. 이 메서드를 통해 세트 자료형에 값을 추가할 수 있습니다.
set_variable = set()
print(set_variable, type(set_variable))
# 정수 1값을 set_variable에 5차례 넣습니다.
[set_variable.add(1) for _ in range(5)]
# 출력하면 중복된 값 없이 요소를 갖는 걸 볼 수 있습니다.
print(set_variable)
### {1}
요소 삭제하기 remove()
요소를 삭제하는 방법으로 2가지가 존재합니다. 우선 먼저 설명드릴 메서드는 remove()를 활용한 삭제입니다. 세트 자료형.remove(요소)를 입력하면 됩니다. remove() 메서드는 삭제할 요소가 없다면 KeyError를 발생시킵니다.
print(set_variable)
set_variable.remove(9)
print(set_varaible)
set.remove('없는값')
### error 발생
요소 삭제하기 discard()
remove와 비슷합니다. 다만 discard() 메서드는 요소가 세트 자료형 내에 존재하지 않아도 KeyError를 발생시키지 않습니다.
set.discard('없는값')
### error 미발생
요소 임의 삭제하기 pop()
요소를 랜덤하게 삭제하는 메서드는 pop()입니다. 세트 자료형.pop()와 같이 입력하면 됩니다.
pop() 메서드는 요소를 임의로 선택하고 반환한뒤 삭제합니다. 세트 자료형 내에서 더 이상 삭제할 요소가 없다면 Key Error를 발생시킵니다.순서를 보장하지않습니다.
요소 전체 삭제하기
- 세트 자료형.clear()
set_variable = {_ for _ in range(20) if _ % 3 == 0}
print(set_variable)
set_variable.clear()
print(set_variable)
요소 개수(크기) 구하기
- len()
set_variable = {_ for _ in range(20) if _ % 3 == 0}
print(set_variable, "개수는", len(set_variable), "입니다.")
합집합 : union() 혹은 vertical bar()
set.union(세트자료형1, 세트자료형2)의 형태로 사용합니다. 세트 자료형1과 세트 자료형 2의 값을 합친 것에서 중복을 제거합니다. vertical bar(|)를 활용하여 세트자료형|세트자료형2처럼 사용할 수도 있습니다.
A = {_ for _ in range(1,5)}
B = {_ for _ in range(2,6) if _ != 3}
print('set.union(A,B): " set.union(A,B))
print('A|B:' , A | B)
교집합 : intersection() 혹은 &
- set.intersection(세트자료형1, 세트자료형2)
- A & B
차집합 : difference() 혹은 -
- set.difference(A,B)
- A - B
대칭차집합 : symmetric_difference() 혹은 ^
- 각자의 요소의 합집합(합집합 - 교집합)
- set.symmetric_difference(A,B)
- A ^ B
update() 혹은 |= : 반환값 없음
A = {1,2,3,4}
B = {2,4,5}
A.update(B) -> {1,2,3,4,5}
A.intersection_update(B)
A.Difference.update(B)
부분집합 issubset()
세트 자료형1.issubset(세트자로형2)의 형태로 사용합니다. 세트 자료형1이 세트 자료형의 부분집합이면 True, 아니면 False 범위를 반환합니다.
A : {0,1,2}
B : {0,1}
Aissubset(B) - > True
상위집합 issuperset()
A : {0,1,2}
B : {0,1}
print(A.issuperstet(B))
진부분집합 >, < 전부다 포함하는지.
A = {0,1,2}
B = {0,1,2}
print(A > B) -> FALSE
print(B > A) -> FALSE
같다 ==
==를 통해서 같은지 확인 가능
isdisjoint(세트가 겹치지 않는지 판단)
겹치는 요소가 업다면 True , 겹친다면 False
'데이터 분석 및 시각화 > 파이썬' 카테고리의 다른 글
[Python] 기초 정리(전역변수, 지역변수, 람다(lambda)) (0) | 2023.01.13 |
---|---|
[Python] 기초 정리(함수, 문자열 메서드 join) (0) | 2023.01.12 |
[Python] 메모리에 객체를 저장하는 구조 (0) | 2023.01.11 |
[Python] 기초 정리(dictionary, zip, list comprehension) (2) | 2023.01.10 |
[Python] 기초 정리(for문, range의 활용, while문, break, continue) (0) | 2023.01.06 |