Skip to main content

Command Palette

Search for a command to run...

[Python TIL] SET 함수: 중복 제거, 메소드

Published
•3 min read•View as Markdown
K

I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).

Python에서 데이터를 다룰 때 중복을 없애고, 집합 연산을 하고 싶다면?

바로 set(집합)을 사용하면 된다.

이 글에서는 set의 기본 개념부터 주요 메소드, 함수 사용법, 그리고 JSON과 딕셔너리 변환까지 한 번에 정리해보겠다.


🧩 set이란?

Python의 set은 중복을 허용하지 않고, 순서가 없는 자료형이다. 수학의 집합(set) 개념과 유사하다.

my_set = {1, 2, 3, 3, 4}
print(my_set)  # 출력: {1, 2, 3, 4}

❗ 중복된 3은 자동으로 제거됨


🛠️ set을 만드는 방법

1. 중괄호 {} 사용

fruits = {"apple", "banana", "apple"}
print(fruits)  # 출력: {'apple', 'banana'}

2. set() 함수로 리스트나 문자열 변환

numbers = set([1, 2, 3, 2])
print(numbers)  # 출력: {1, 2, 3}

chars = set("hello")
print(chars)  # 출력: {'h', 'e', 'l', 'o'}

📌 set의 주요 특징

특징설명
중복 불가같은 값을 여러 번 넣어도 한 번만 저장됨
순서 없음인덱싱 불가 (리스트처럼 set[0] 못함)
변경 가능원소 추가/삭제 가능
집합 연산 가능합집합, 교집합, 차집합 가능

🧰 주요 메소드 정리

🔹 add() – 하나의 원소 추가

my_set = {1, 2}
my_set.add(3)
print(my_set)  # 출력: {1, 2, 3}

🔹 update() – 여러 원소 한꺼번에 추가

my_set.update([4, 5])
print(my_set)  # 출력: {1, 2, 3, 4, 5}

🔹 remove() – 특정 원소 삭제 (없으면 에러 발생)

my_set.remove(2)
print(my_set)  # 출력: {1, 3, 4, 5}
# my_set.remove(100)  # 에러 발생!

🔹 discard() – 특정 원소 삭제 (없어도 에러 없음)

my_set.discard(100)  # 조용히 무시

📏 set에서 사용할 수 있는 함수들

🔸 in 연산자

num_set = {1, 2, 3}
print(3 in num_set)  # 출력: True
print(5 in num_set)  # 출력: False

🔸 len() 함수 – set의 크기(원소 개수)

print(len(num_set))  # 출력: 3

연습 문제

데이터의 집합 나타내기

파이썬의 set은 집합을 나타내는 데이터 구조입니다. 집합은 순서와 중복이 없는 데이터 구조로, 데이터 분석에서 중복을 무시해야 하는 경우에 사용할 수 있습니다.

예로, 수강생 명단이 주어졌을 때 set을 이용하면 학생 유형을 쉽게 구할 수 있습니다.

  • A 수업과 B 수업 둘 중 하나 이상을 수강하는 학생 수 구하기

  • A 수업과 B 수업을 모두 수강하는 학생 수 구하기

데이터 분석에 이용하기

작품 A와 B를 모두 시청한 사람의 수, 둘 중 하나만 시청한 사람의 수를 이용하면 두 작품의 유사도를 유추할 수 있습니다. 리스트와 딕셔너리 대신 집합을 사용하면 이를 훨씬 쉽게 구할 수 있습니다.

집합을 생성하고 원소를 추가, 삭제하는 함수를 연습해 보세요.

# 정수 3과 5를 원소로 갖는 새로운 집합을 생성합니다.
my_set = {3,5}

# 정수 7을 my_set에 추가합니다.
my_set.add(7)

# new_numbers 리스트의 원소를 my_set에 추가합니다.
new_numbers = [1, 2, 3, 4, 5]
my_set.update(new_numbers)

# my_set에서 짝수를 모두 제거합니다.
my_set = {num for num in my_set if num%2 != 0}

🎯 마무리 요약

항목설명
set 특징중복 제거, 순서 없음
주요 메소드add, update, remove, discard
사용 가능한 함수in, len

More from this blog

[Python 자료구조] Binary Tree(이진 트리) 개념과 배열

자료구조 중에서도 가장 자주 등장하고, 가장 중요한 트리 중 하나가 바로 이진트리(Binary Tree)이다.만약 자료구조 공부를 처음 시작했다면, 이진트리는 꼭 제대로 이해하고 넘어가야 할 핵심 개념이다. 그렇다면 이진트리는 도대체 어떤 구조이며, 왜 이렇게 중요할까? 🌳 이진트리란? 이진트리(Binary Tree)는 이름 그대로 자식 노드를 최대 두 개까지만 가질 수 있는 트리를 의미한다.자식 노드가 1개거나 0개일 수도 있지만, 최대...

Apr 8, 20253 min read

[Python 자료구조] Tree(트리) 구조

회사 조직도, 가계도, 또는 어떤 계층적인 구조를 표현할 때 자주 등장하는 그림이 있다. 바로 '트리 구조'이다. 그런데 이 구조를 처음 보면, "도대체 어디가 나무야?" 라고 생각할 수 있다. 하지만 나무를 거꾸로(180도 돌려서) 생각해보면 이해가 쉽다. 위쪽에 커다란 줄기(기둥)가 있고, 아래로 가지가 퍼져 나가는 모습과 아주 흡사하기 때문이다. 그래서 우리는 이런 구조를 트리(Tree) 구조라고 부른다. 🧩 트리(Tree)란 무엇인가...

Apr 8, 20253 min read

[Python 자료구조] Stack(스택)

스택 정의, 값 넣기/빼기 프로그래밍을 처음 접할 때 나오는 대표적인 자료구조 중 하나가 바로 스택(Stack) 이다. 이름만 들으면 어렵게 느껴질 수 있지만, 실제로는 우리 일상에서도 쉽게 찾아볼 수 있는 개념이다. 예를 들어 젠가(Jenga) 게임을 떠올려보자. 스택이란? 젠가로 이해하는 Stack의 원리 젠가 블럭을 하나씩 통에 넣고 꺼내는 상황을 상상해보자. 가장 최근에 넣은 블럭은 통의 가장 위에 쌓이게 된다. 그리고 꺼내고자 할 때...

Apr 7, 20253 min read

[Sql] 제약 조건과 무결성

SQL을 공부하다 보면 반드시 만나게 되는 용어들이 있다. 바로 기본키, 외래키, 무결성 제약 조건 같은 개념이다. 이 글에서는 이 용어들을 단순히 암기하는 게 아니라, 예시를 통해 자연스럽게 이해할 수 있도록 정리해보았다. 🎯 제약 조건이란? 제약 조건(Constraint)은 데이터베이스에 저장되는 데이터의 정확성과 신뢰성을 보장하기 위해 설정하는 규칙이다. ✅ 한 줄에 하나씩만 작성해야 하며, 테이블 생성 시 컬럼 옆에 정의하거나 AL...

Apr 7, 20253 min read

[Python TIL] Python에서 False와 True로 평가되는 값들

파이썬에서는 if 조건문이나 while 같은 컨트롤 흐름에서 자동으로 False로 간주되는 값들이 있다. 이걸 "Falsy 값" 또는 "Falsy Object" 라고 부른다. 이걸 알아두면 코드를 훨씬 깔끔하게 쓸 수 있다. 예를 들어, if not my_list: 같은 표현이 빈 리스트를 체크하는 데 쓰이기도 하기 때문이다. ⚠️ 파이썬에서 False로 평가되는 값들 (Falsy 값) 유형예시설명 숫자형0, 0.0, 0j정수, ...

Apr 6, 20252 min read

Code Compass

75 posts