[Python] :: set의 합집합(union, |), 교집합(intersection, &), 차집합(difference, -)

2024. 2. 25. 10:05·[Programming Language]/[Python]

◎ set 이란?

  파이썬에서 set은 집합 자료형을 말한다. set은 대괄호([ ])를 사용하는 리스트와 달리 중괄호({ })를 사용한다. 이는 보통 리스트에서 2개 이상 중복되는 원소를 1개만 남기고 사용할 때 사용한다. set은 다음과 같은 특징이 존재한다.

  • 중복된 원소를 가질 수 없다.
  • 순서가 존재하지 않는다.

> 예제 코드)

만약 [1, 2, 3, 3, 4]와 같은 리스트나 "Hello"와 같은 문자열이 있다고 가정해보자. 이 두개를 집합으로 만들면 아래와 같은 결과가 반환된다.

list1 = [1, 2, 3, 3, 4]
str1 = "Hello"

print("set(list1) : ", set(list1))
print("set(str1) : ", set(str1))

 

> 실행 결과)

위와 같이 중복된 원소인 3과 문자 'l'이 한 개씩만 남게 되는 것을 확인할 수 있다. 이로써 set은 중복된 원소를 가지지 않는다는 특징을 확인하였다. 그렇다면 순서가 존재하지 않는다는 것은 무엇일까? set(list1)의 결과는 우연히 오름차순으로 정렬되어 출력되긴 했지만 set(str1)의 결과를 보면 순서가 뒤죽박죽인 것을 확인할 수 있다. 위 코드를 몇번 더 실행시켜 보겠다.

set(list1)의 결과는 계속해서 오름차순으로 출력이 되고 있으나 set(str1)의 결과는 실행할 때마다 순서가 바뀌는 것을 확인할 수 있다. 이처럼 set은 순서가 존재하지 않는다는 특징을 가지고 있다.


◎ set의 합집합, 교집합, 차집합

  set은 집합 자료형이므로 합집합, 교집합, 차집합을 구할 수 있다. 각각 모두 함수를 사용해도 되지만 더 간결한 표현을 위해 기호를 사용하는 경우가 많으니 두 표현이 모두 동일하다는 것을 기억하도록 하자.

 

  1) 합집합(union(), |)

  합집합을 구하기 위해서는 union() 함수를 사용하는 방법과 | 기호를 사용하는 방법이 있다. 두 방법의 결과는 모두 동일하다.

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}

print("s1.union(s2) : ", s1.union(s2))
print("s2.union(s1) : ", s2.union(s1))
print("s1 | s2 : ", s1 | s2)

 

  2) 교집합(intersection(), &)

  교집합을 구하기 위해서는 intersection() 함수를 사용하는 방법과 & 기호를 사용하는 방법이 있다. 이 역시 결과는 둘다 동일하다.

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}

print("s1.intersection(s2) : ", s1.intersection(s2))
print("s2.intersection(s1) : ", s2.intersection(s1))
print("s1 & s2 : ", s1 & s2)

 

  3) 차집합(difference(), -)

  차집합을 구하기 위해서는 difference() 함수를 사용하는 방법과 - 기호를 사용하는 방법이 있고, 결과는 모두 동일하다.

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}

print("s1.difference(s2) : ", s1.difference(s2))
print("s2.difference(s1) : ", s2.difference(s1))
print("s1 - s2 : ", s1 - s2)
print("s2 - s1 : ", s2 - s1)

 

저작자표시 비영리 변경금지 (새창열림)

'[Programming Language] > [Python]' 카테고리의 다른 글

[Python] :: for 반복문을 사용할 때 아무런 값도 필요하지 않은 경우 - '_(언더바 or 언더스코어)' 기호 사용  (0) 2024.02.24
[Python] :: 리스트(list) 원소 비교 방법(>, <, ==, !=)  (1) 2024.02.23
[Python] :: 제곱 함수 pow(), math.pow(), **연산자 // 제곱근 함수 math.sqrt(), "** 0.5"  (0) 2024.02.22
[Python] :: 클래스 총정리(객체, 인스턴스, 생성자 및 소멸자, isinstance(), 속성, 메소드, 클래스 변수, 정적 메소드와 클래스 메소드, 상속, 추상클래스)  (0) 2023.07.31
[Python] :: 모듈, 패키지, 라이브러리, 프레임워크의 차이 / 모듈 세부 내용  (0) 2023.07.14
'[Programming Language]/[Python]' 카테고리의 다른 글
  • [Python] :: for 반복문을 사용할 때 아무런 값도 필요하지 않은 경우 - '_(언더바 or 언더스코어)' 기호 사용
  • [Python] :: 리스트(list) 원소 비교 방법(>, <, ==, !=)
  • [Python] :: 제곱 함수 pow(), math.pow(), **연산자 // 제곱근 함수 math.sqrt(), "** 0.5"
  • [Python] :: 클래스 총정리(객체, 인스턴스, 생성자 및 소멸자, isinstance(), 속성, 메소드, 클래스 변수, 정적 메소드와 클래스 메소드, 상속, 추상클래스)
Semincolon
Semincolon
It seems small, that semicolon is a big deal.
  • Semincolon
    Semincolon
    Semincolon
  • 전체
    오늘
    어제
    • 분류 전체보기 (124) N
      • [Programming Language] (76)
        • [JSP] (4)
        • [Swift] (23)
        • [SwiftUI] (16)
        • [Python] (22)
        • [C언어] (6)
        • [Kotlin] (4)
        • [C#] (1)
      • [Frame Work] (5)
        • [Flutter] (4)
        • [Spring Boot] (1)
      • [Projects] (3)
        • [Android][Kotlin] 공유 캘린더(20.. (1)
        • [Unity] 인내의 숲(2024.03) (2)
      • [DB] (9) N
        • - Oracle (9) N
      • [Programmers] (24) N
        • - SQL (24) N
      • [ETC] (2)
      • Today's Learning (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Semincolon
[Python] :: set의 합집합(union, |), 교집합(intersection, &), 차집합(difference, -)
상단으로

티스토리툴바