티스토리 뷰
셋(set)
set 클래스는 여러 개의 자료를 비 순서로 적재하는 가변 길이 비순차 자료구조를 생성하는 클래스입니다.
(1) 셋 객체 특징
□ 비순서 자료구조를 갖는 열거형 객체를 생성할 수 있습니다.
□ 다음 형식과 같이 중괄호({})안에 콤마(,)를 이용하여 원소를 구분합니다.
형식
변수 = {값1, 값2, .... 값n} |
□ 중복을 허용하지 않습니다.
□ 순서가 없기 때문에 색인(index)을 사용할 수 없습니다.
□ 객체에서 제공하는 함수를 이용하여 추가, 삭제 및 집합 연산 등이 가능합니다.
실습 셋 객체 예시
# (1) 중복 불가
s = {1, 3, 5, 3, 1}
print(len(s))
print(s)
3
# (2) 요소 반복
for d in s:
print(d, end=' ') # 1 3 5
print()
{1, 3, 5}
# (3) 집합관련 함수
s2 = {3, 6}
print(s.union(s2)) # 합집합
print(s.difference(s2)) # 차집합
print(s.intersection(s2)) # 교집합
{1, 3, 5, 6}
{1, 5}
{3}
# (4) 추가, 삭제 함수
s3 = {1, 3, 5}
print(s3)
{1, 3, 5}
s3.add(7) # 원소 추가
print(s3)
{1, 3, 5, 7}
s3.discard(3) # 원소 삭제
print(s3)
{1, 5, 7}
# (1) 중복 불가
변수 s는 5개의 원소 중에서 4번째 원소 3은 이미지 2번째에서 출현하기에 중복되어 저장되지 않습니다.
# (2) 요소 반복
셋은 색인을 사용할 수 없지만 for문에서 요소 반복으로 사용할 수 있습니다.
# (3) 집합관련 함수
변수 s와 s2 간의 합집합(union), 차집합(difference), 교집합(intersection) 연산이 관련 함수들에 의해서 수행됩니다.
# (4) 추가, 삭제 함수
셋 객체에서 집합의 원소를 추가 및 삭제할 수 있으며, 추가는 add(원소), 삭제는 discard(원소) 함수를 이용합니다.
(2) 중복 제거
중복을 허용하지 않는다는 셋의 특징을 이용하여 리스트의 중복 원소를 제거하는데 셋을 이용할 수 있습니다.
실습 중복 제거 예시
# 중복 원소를 갖는 리스트
gender = ['남', '여', '남', '여']
# 중복 원소 제거
sgender = set(gender) # list -> set
lgender = list(sgender)
print(lgender)
print(lgender[1])
['남', '여']
여
딕트(dict)
dict 클래스는 사전(dictionary) 형으로 여러 개의 자료를 비 순서로 적재하는 가변 길이 비순차 자료 구조를 생성하는 클래스입니다.
(1) 딕트 객체 특징
□ 사전 형식으로 비순서 자료구조를 갖는 열거형객체를 생성할 수 있습니다.
□ 다음 형식과 같이 중괄호 안에 ['키':'값']의 쌍으로 원소를 입력하고, 콤마(,)를 이용하여 원소를 구분합니다.
형식
변수 = {'키' : '값', '키' : '값, .... '키' : '값' |
□ '키'는 중복이 허용되지 않고, '값'은 중복이 허용됩니다.
□ 색인(index) 대신에 키(key)를 이용해서 '값'을 참조합니다.
□ 키를 색인으로 이용될 수 있기 때문에 원소 수정, 삭제, 추가 등이 가능합니다.
실습 딕트 객체 예시
# (1) dict 생성 방법1
dic = dict(key1 = 100, key2 = 200, key3 = 300)
print(dic)
{'key1': 100, 'key2': 200, 'key3': 300}
# (2) dict 생성 방법2
person = {'name': '홍길동', 'age': 35, 'address': '서울시'}
print(person)
print(person['name'])
print(type(dic), type(person))
{'name': '홍길동', 'age': 35, 'address': '서울시'}
홍길동
<class 'dict'> <class 'dict'>
# (3) 원소 수정, 삭제, 추가
# dict 원소 수정
person['age'] = 45
print(person)
{'name': '홍길동', 'age': 45, 'address': '서울시'}
# dict 원소 삭제
del person['address']
print(person) # {'name': '홍길동', 'age': 45}
{'name': '홍길동', 'age': 45}
# dict 원소 추가
person['pay'] = 350
print(person) # {'name': '홍길동', 'age': 45, 'pay': 350}
{'name': '홍길동', 'age': 45, 'pay': 350}
# (1) dict 생성 방법1
dict 클래스에서 '키=값' 형식의 인수를 이용하여 딕트 객체를 생성할 수 있습니다.
# (2) dict 생성 방법 2
중괄호 기호 안에 '{키 : 값}' 형식으로 딕트 객체를 생성할 수 있습니다. person 변수는 3개의 원소를 갖는 딕트 객체입니다.
# (3) 원소 수정, 삭제, 추가
딕트는 키를 색인으로 이용할 수 있기에 원소의 수정, 삭제, 추가가 가능합니다.
(2) 요소 검사와 반복
딕트는 셋과 같이 비순서 자료구조이지만 열거형 객체이기에 요소 검사와 요소 반복 기능을 지원합니다.
실습 요소 검사와 반복 예시
# (1) 요소 검사
print(person['age']) # 45
print('age' in person) # True
45
True
# (2) 요소 반복
for key in person.keys() : # key 넘김
print(key) # key 출력
name
age
pay
for v in person.values() : # value 넘김
print(v) # value 출력
홍길동
45
350
for i in person.items() : # (key, value) 넘김
print(i) # ('name', '홍길동')
('name', '홍길동')
('age', 45)
('pay', 350)
# (1) 요소 검사
딕트의 요소를 검사하기 위해서 '요소 in 딕트객체' 형식으로 in 앞부분에 검사할 요소를 넣습니다.
# (2) 요소 반복
딕트 객체는 for문에서 요소 반복으로 사용할 수 있습니다.
(3) 단어 출현빈도수 구하기
실습 단어 빈도수 구하기 예시
# (1) 단어 데이터 셋
charset = ['abc', 'code', 'band', 'band', 'abc']
wc = {} # 빈 셋
# (2) get() 함수 이용 : key 이용 value 가져오기
for key in charset :
wc[key] = wc.get(key, 0) + 1 # get() 이용
print(wc)
{'abc': 2, 'code': 1, 'band': 2}
# (1) 단어 데이터 셋
charset 리스트 객체는 중복된 5개의 단어를 원소로 가집니다.
# (2) get() 함수 이용
charset 리스트 객체를 for문의 요소 반복으로 사용하여 순차적으로 단어를 하나씩 key 변수로 넘겨받습니다.
'Python > 실전 예제로 배우는 파이썬 프로그래밍' 카테고리의 다른 글
여러 모양의 자료 만들기 연습문제 (0) | 2023.03.04 |
---|---|
자료구조 복제 및 알고리즘(algorithm) (0) | 2023.03.03 |
순서 자료구조 (0) | 2023.03.01 |
원하는대로 작업순서 바꾸기 연습문제 (0) | 2023.02.28 |
반복문 (0) | 2023.02.27 |
- Total
- Today
- Yesterday
- API
- EDA
- 캐글
- Lv3
- SQLD
- LV1
- lv4
- 데이터 시각화
- LV2
- 데이터사이언스
- SQL
- mysql
- 데이터 분석
- 쿼리 테스트
- 데이터분석
- sql 테스트
- 알고리즘
- ai
- ML
- 머신러닝
- 프로그래머스
- 부스트코스
- Kaggle
- Python
- 인공지능
- 딥러닝
- nlp
- 파이썬
- 태블로
- 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |