본문 바로가기
sbs 아카데미 학원 수업/파이썬 수업 메모 (SBS 아카데미 학원)

파이썬 수업 5일차 range,split,딕셔너리(Dictionary),튜플

by demianpark127 2024. 11. 30.
SMALL

https://colab.research.google.com/drive/

 

Google Colab Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

파이썬 range() 함수 설명

range() 함수는 숫자의 **연속적인 시퀀스(범위)**를 생성할 때 사용하는 파이썬 내장 함수입니다. 주로 반복문(for)과 함께 사용되어 특정 범위 내의 값을 순차적으로 처리합니다.


기본 문법

python
코드 복사
range(start, stop, step)
  • start: 시작 값 (포함, 생략 시 기본값은 0)
  • stop: 끝 값 (포함하지 않음, 필수)
  • step: 증가 또는 감소 값 (생략 시 기본값은 1)

사용 예시

  1. 기본 사용출력:
  2. 코드 복사
    0 1 2 3 4
  3. python
    코드 복사
    for i in range(5): # start=0, stop=5, step=1 print(i)
  4. 시작 값 지정출력:
  5. 코드 복사
    1 2 3 4
  6. python
    코드 복사
    for i in range(1, 5): # start=1, stop=5, step=1 print(i)
  7. 증가값 지정출력:
  8. 코드 복사
    1 3 5 7 9
  9. python
    코드 복사
    for i in range(1, 10, 2): # start=1, stop=10, step=2 print(i)
  10. 역순 처리출력:
  11. 코드 복사
    10 8 6 4 2
  12. python
    코드 복사
    for i in range(10, 0, -2): # start=10, stop=0, step=-2 print(i)

range()의 특징

  1. 메모리 효율성:
    • range()는 숫자를 미리 생성하지 않고, 필요할 때마다 생성하는 이터레이터 객체입니다.
    • 이로 인해 메모리 사용량이 매우 적습니다.
    예:출력:
  2. scss
    코드 복사
    range(0, 5) [0, 1, 2, 3, 4]
  3. python
    코드 복사
    print(range(5)) # range 객체 반환 print(list(range(5))) # 리스트로 변환
  4. 정수만 처리 가능:
    • range()는 정수(int) 값만 사용할 수 있습니다. 실수를 사용할 경우 에러가 발생합니다.
    python
    코드 복사
    range(1.0, 5.0) # TypeError 발생
  5. 조건 만족 시 종료:
    • stop 값에 도달하면 반복이 종료됩니다. stop 값은 포함되지 않습니다.

활용 예시

  1. 리스트 값 처리
  2. python
    코드 복사
    numbers = [10, 20, 30, 40, 50] for i in range(len(numbers)): # 인덱스 활용 print(f"Index {i}: {numbers[i]}")
  3. 짝수만 출력
  4. python
    코드 복사
    for i in range(0, 11, 2): # 0부터 10까지 2씩 증가 print(i)
  5. 거꾸로 카운트다운
  6. python
    코드 복사
    for i in range(10, 0, -1): print(i)

range()는 반복문과 함께 데이터를 순차적으로 처리하거나 특정 조건을 만족하는 숫자들을 다룰 때 매우 유용한 함수입니다!

 

# ★ *
N = int(input())
# N = 5
for floor in range(N) :
  for space in range(N - floor - 1) :
    print(" ", end="")
  for number in range (floor + 1) :
    print("*", end="")
  print()
# 'ABC' * 3 = "ABCABCABC"
for floor in range(N) :
  print(" " * (N - floor - 1) + "*" * (floor + 1))

N = int(input())
# 최댓값 : N
for floor in range(N) :
  print("*"*(floor +1 ))
for floor in range(N-1) :
  print("*"*(N-floor-1))

for floor in range(N) :
  print("*"*(floor +1))
for floor in range(N) :
  print("*"*(N-floor))

코드 설명: a = list(map(int, input().split()))

이 코드는 파이썬에서 입력받은 문자열 데이터를 정수 리스트로 변환하는 과정을 수행합니다. 이를 단계별로 자세히 살펴보겠습니다.


코드의 주요 구성 요소

  1. input()
    • 사용자로부터 한 줄의 문자열 입력을 받습니다.
    • 예: 사용자가 1 2 3 4 5를 입력하면, input()은 "1 2 3 4 5"라는 문자열을 반환합니다.
  2. .split()
    • 문자열을 공백 단위로 분리하여 리스트로 변환합니다.
    • 예: "1 2 3 4 5".split() → ["1", "2", "3", "4", "5"]
  3. map(int, ...)
    • 리스트의 각 요소를 정수(int)로 변환합니다.
    • map 함수는 반복 가능한 객체의 요소에 지정된 함수를 하나씩 적용합니다.
    • 예: map(int, ["1", "2", "3", "4", "5"]) → [1, 2, 3, 4, 5] (하지만 이 결과는 map 객체 형태)
  4. list()
    • map 함수의 결과인 map 객체를 리스트로 변환합니다.
    • 최종 결과: [1, 2, 3, 4, 5]

전체 코드 동작 흐름

  1. 사용자 입력: 1 2 3 4 5
    • input() → "1 2 3 4 5"
  2. 공백으로 분리:
    • input().split() → ["1", "2", "3", "4", "5"]
  3. 문자열을 정수로 변환:
    • map(int, input().split()) → map 객체 (정수 변환 준비)
  4. 리스트 변환:
    • list(map(int, input().split())) → [1, 2, 3, 4, 5]

예제 실행

입력:

plaintext
코드 복사
10 20 30 40 50

코드:

python
코드 복사
a = list(map(int, input().split())) print(a)

출력:

plaintext
코드 복사
[10, 20, 30, 40, 50]

활용 예시

  1. 리스트 합 계산:입력:출력:
  2. plaintext
    코드 복사
    15
  3. plaintext
    코드 복사
    1 2 3 4 5
  4. python
    코드 복사
    a = list(map(int, input().split())) print(sum(a))
  5. 최댓값/최솟값 찾기:입력:출력:
  6. plaintext
    코드 복사
    20 5
  7. plaintext
    코드 복사
    10 5 20 15
  8. python
    코드 복사
    a = list(map(int, input().split())) print(max(a), min(a))
  9. 정렬 후 출력:입력:출력:
  10. plaintext
    코드 복사
    [1, 3, 4, 5, 8]
  11. plaintext
    코드 복사
    5 3 8 1 4
  12. python
    코드 복사
    a = list(map(int, input().split())) print(sorted(a))

요약

이 코드는 여러 개의 숫자를 공백으로 구분하여 입력받고, 이를 정수 리스트로 변환하는 일반적인 방식입니다. 반복적으로 숫자를 처리해야 하는 다양한 문제에서 자주 사용됩니다.

 

 

 

 


N = int(input())

for number in range(N) :
  #a = (input().split())
  # ['1','1']
  a = list(map(int, input().split()))  
  print(a)

 

N = int(input())

for number in range(N) :  
  # ['1','1']
  #a = (input().split())
  #print(f'Case #{number+1}): {int(a[0] + int(a[1])}')
  # [1, 1]
  a = list(map(int, input().split()))  
  print(f'Case #{number+1}: {(a[0]) + (a[1])}')

 

코드 설명

이 코드는 사용자로부터 입력을 받아 두 숫자의 합을 출력하는 프로그램입니다. 출력 형식은 각 테스트 케이스에 대해 Case #x: y의 형태로 결과를 표시합니다. 이를 단계별로 분석하겠습니다.


코드 흐름 분석

  1. N = int(input())
    • 테스트 케이스의 수를 입력받습니다.
    • 입력 예시: 3 (총 3개의 테스트 케이스)
  2. for number in range(N):
    • 테스트 케이스의 수(N)만큼 반복문을 실행합니다.
    • range(N)은 0부터 N-1까지의 정수를 생성합니다.
    • 변수 number는 현재 반복 횟수를 나타냅니다.
  3. a = list(map(int, input().split()))
    • 한 줄의 입력을 받아 공백으로 구분된 숫자들을 정수 리스트로 변환합니다.
    • input().split() → 공백으로 구분된 문자열 리스트 반환 (예: ['1', '1'])
    • map(int, ...) → 문자열 리스트를 정수 리스트로 변환 (예: [1, 1])
    • 최종적으로 a는 두 정수가 들어 있는 리스트가 됩니다.
  4. print(f'Case #{number+1}: {a[0] + a[1]}')
    • number+1은 현재 테스트 케이스 번호를 나타냅니다. (0부터 시작하므로 1을 더함)
    • a[0]과 a[1]을 더한 값을 출력 형식에 맞게 표시합니다.
    • 출력 형식: Case #테스트케이스번호: 합

실행 예제

입력:

plaintext
코드 복사
3 1 1 2 3 3 5

코드 실행:

python
코드 복사
N = int(input()) # 3 for number in range(N): a = list(map(int, input().split())) # 첫 번째 반복: [1, 1] print(f'Case #{number+1}: {a[0] + a[1]}')

출력:

plaintext
코드 복사
Case #1: 2 Case #2: 5 Case #3: 8

주요 포인트

  1. 반복 횟수:
    • range(N)으로 테스트 케이스 횟수만큼 반복 수행.
  2. 입력 처리:
    • input().split()으로 공백을 기준으로 입력을 분리.
    • map(int, ...)으로 문자열을 정수로 변환.
    • 리스트에 저장하여 인덱싱으로 각 숫자 접근 (a[0], a[1]).
  3. 출력 형식:
    • f-string을 사용하여 문자열 포매팅.
    • 테스트 케이스 번호와 결과를 형식에 맞게 출력.

수정 필요했던 코드 부분

원래 코드:

python
코드 복사
# 잘못된 부분 print(f'Case #{number+1}): {int(a[0] + int(a[1])}')

수정된 코드:

python
코드 복사
# 올바른 부분 print(f'Case #{number+1}: {a[0] + a[1]}')
  • 괄호 오류와 잘못된 변환(int(a[0] + int(a[1])) 수정.
  • a[0]과 a[1]은 이미 정수형 리스트의 값이므로 추가 변환 불필요.

활용

이 코드는 여러 테스트 케이스의 데이터를 받아 계산 결과를 형식에 맞게 출력해야 하는 문제에서 자주 사용됩니다. 예를 들어:

  • 두 숫자의 합 출력.
  • 두 숫자의 곱 출력.
  • 특정 연산을 여러 테스트 케이스에 반복 적용.

파이썬 딕셔너리(Dictionary)

파이썬의 딕셔너리는 키(key)와 값(value)의 쌍으로 데이터를 저장하는 자료구조입니다. 데이터를 빠르게 검색, 추가, 수정, 삭제할 수 있는 효율적인 데이터 타입입니다.


딕셔너리의 특징

  1. 키-값 쌍(Key-Value Pair)
    • 데이터를 **키(key)**를 통해 접근하며, 각 키는 고유해야 합니다.
    • 값(value)은 중복 가능하며, 다양한 데이터 타입을 가질 수 있습니다.
  2. 변경 가능
    • 딕셔너리는 mutable(변경 가능)하며, 데이터 추가, 삭제, 수정이 가능합니다.
  3. 순서 보장 (파이썬 3.7부터)
    • 삽입된 순서를 유지합니다.
  4. 해시 기반
    • 키는 해시 가능(immutable, 예: 문자열, 숫자, 튜플 등)해야 합니다.

딕셔너리 생성

  1. 중괄호 사용
  2. python
    코드 복사
    my_dict = {"name": "Alice", "age": 25, "city": "Seoul"}
  3. dict() 함수 사용
  4. python
    코드 복사
    my_dict = dict(name="Alice", age=25, city="Seoul")
  5. 빈 딕셔너리 생성
  6. python
    코드 복사
    my_dict = {}

딕셔너리 주요 기능

  1. 값 접근
  2. python
    코드 복사
    my_dict = {"name": "Alice", "age": 25} print(my_dict["name"]) # 출력: Alice
  3. 값 변경
  4. python
    코드 복사
    my_dict["age"] = 26 print(my_dict) # 출력: {'name': 'Alice', 'age': 26}
  5. 새로운 키-값 추가
  6. python
    코드 복사
    my_dict["city"] = "Seoul" print(my_dict) # 출력: {'name': 'Alice', 'age': 26, 'city': 'Seoul'}
  7. 키 삭제
  8. python
    코드 복사
    del my_dict["age"] print(my_dict) # 출력: {'name': 'Alice', 'city': 'Seoul'}
  9. get() 메서드로 안전하게 값 접근
    • 키가 없는 경우 KeyError를 방지하며 기본값을 설정할 수 있습니다.
    python
    코드 복사
    print(my_dict.get("age", "Not Found")) # 출력: Not Found
  10. 키/값/아이템 확인
  11. python
    코드 복사
    print(my_dict.keys()) # 키 목록: dict_keys(['name', 'city']) print(my_dict.values()) # 값 목록: dict_values(['Alice', 'Seoul']) print(my_dict.items()) # 아이템 목록: dict_items([('name', 'Alice'), ('city', 'Seoul')])
  12. 반복문 사용
  13. python
    코드 복사
    for key, value in my_dict.items(): print(f"{key}: {value}")

딕셔너리 메서드

  1. update(): 다른 딕셔너리를 병합
  2. python
    코드 복사
    my_dict.update({"country": "Korea", "city": "Busan"}) print(my_dict) # 출력: {'name': 'Alice', 'city': 'Busan', 'country': 'Korea'}
  3. pop(): 특정 키 제거 및 값 반환
  4. python
    코드 복사
    age = my_dict.pop("age", "Not Found") print(age) # 키가 있으면 값 출력, 없으면 기본값 출력
  5. clear(): 모든 키-값 제거
  6. python
    코드 복사
    my_dict.clear() print(my_dict) # 출력: {}
  7. copy(): 딕셔너리 복사
  8. python
    코드 복사
    new_dict = my_dict.copy()

예제

  1. 학생 점수 관리 시스템
  2. python
    코드 복사
    scores = {"Alice": 85, "Bob": 92, "Charlie": 78} # 학생 추가 scores["David"] = 88 # 점수 수정 scores["Alice"] = 90 # 특정 학생 점수 출력 print(scores["Bob"]) # 출력: 92 # 모든 학생의 평균 점수 계산 avg_score = sum(scores.values()) / len(scores) print(f"평균 점수: {avg_score}")
  3. 단어 빈도수 계산
  4. python
    코드 복사
    text = "apple banana apple orange banana apple" word_count = {} for word in text.split(): word_count[word] = word_count.get(word, 0) + 1 print(word_count) # 출력: {'apple': 3, 'banana': 2, 'orange': 1}

딕셔너리 vs 리스트

특징딕셔너리리스트

데이터 구조 키-값 쌍 순차적 값
접근 속도 빠름 (키를 통한 접근) 느림 (인덱스/검색 필요)
사용 예시 데이터 매핑, 조회 순서 유지, 반복적 데이터

딕셔너리는 다양한 데이터를 체계적으로 관리하고 빠르게 접근할 수 있는 매우 강력한 자료구조입니다. 상황에 따라 유연하게 활용해 보세요!

 


 

# 딕셔너리 : 사전 (dictionary)
# key - value
# key(unique)
# value(unique X)
# "사과" : "apple"
# "바나나" : "banana"
# "만들다" : "make", "change"

# list = ["A", "B", "C"]
# dict = {"사과" : "apple",
#         "바나나" : "banana",
#         "만들다" : "make",
#         "제과하다" : "make"}

 

person = {"name" : "kim",
          "age" : 30,
          "phone" : "010-1234-5678",
          "subject" : ["python","java"]}
#키값이 유니크해야한다
print(person)

print(person["name"])
print(person["age"])
print(person["phone"])
print(person["subject"])

kim

30

010-1234-5678

['python', 'java']

 

person["gender"] = "female"
print(person["gender"])

female

 

del person["gender"]
print(person)

{'name': 'kim', 'age': 30, 'phone': '010-1234-5678', 'subject': ['python', 'java']}

 

value = person.pop('age')
print(value)
print(person)

30

{'name': 'kim', 'phone': '010-1234-5678', 'subject': ['python', 'java']}

 

# person.clear()
# dict를 빈 dict로 만드는 함수

 

# 딕셔너리의 메소드
print(person.keys())

dict_keys(['name', 'phone', 'subject'])

 

for key in person.keys() :
  print(key)
for key in person :
  print(key)

name

phone

subject

name

phone

subject

 

for key in person.keys() :
  print(person[key])

kim

010-1234-5678

['python', 'java']

 

for item in person.items() :
  print(f'{item[0]} : {item[1]}')

name : kim phone :

010-1234-5678

subject : ['python', 'java']

 

key, value = input().split()
print(key)
print(value)

5 17

5

17

 

print(sorted(person.items()))

print(sorted(person.items(), reverse = True))

[('name', 'kim'), ('phone', '010-1234-5678'), ('subject', ['python', 'java'])]

[('subject', ['python', 'java']), ('phone', '010-1234-5678'), ('name', 'kim')]

 

# json 형식
person = {"name"  :"kim",
          "age" : 30,
          "phone" : "010-1234-5678",
          "subject" : ["pyton", "java"]}

# person.keys() -> key
# person.values() -> value
# person.items() -> key, value

# person["새로운 key"] = "새로운 value" -> dict에 새로운 key, value 한쌍을 추가
# keym value에 data형식은 제한이 없다
# del person["key"] -> key, value 한쌍을 삭제할 수 있습니다.

# sorted

 


 

파이썬 튜플(Tuple)

파이썬의 **튜플(tuple)**은 **변경 불가능(immutable)**한 순서가 있는 데이터 구조입니다. 리스트와 유사하지만, 값을 변경할 수 없다는 점에서 다릅니다.

튜플은 주로 변경되지 않아야 하는 데이터를 다룰 때 사용되며, 가벼운 자료구조로 리스트보다 메모리 효율이 좋습니다.


튜플의 특징

  1. 변경 불가능(Immutable):
    • 생성된 이후 값을 추가, 삭제, 변경할 수 없습니다.
    • 데이터의 안전성을 보장합니다.
  2. 순서 유지:
    • 삽입된 순서를 유지하며, 인덱싱과 슬라이싱이 가능합니다.
  3. 다양한 데이터 타입 저장 가능:
    • 문자열, 숫자, 리스트 등 다양한 데이터 타입을 함께 저장할 수 있습니다.
  4. 소괄호 사용:
    • 튜플은 보통 **소괄호()**로 표현됩니다.
    • 쉼표로 구분하여 작성하며, 소괄호는 생략 가능합니다.
  5. 가변 객체 포함 가능:
    • 튜플 자체는 불변이지만, 가변 객체(예: 리스트)를 포함할 수 있습니다.

튜플 생성

  1. 소괄호 사용
  2. python
    코드 복사
    my_tuple = (1, 2, 3)
  3. 쉼표로만 생성 (소괄호 생략 가능)
  4. python
    코드 복사
    my_tuple = 1, 2, 3
  5. 한 개의 요소를 가진 튜플
    • 반드시 쉼표를 포함해야 함
    python
    코드 복사
    single_tuple = (5,) # 올바른 튜플 not_a_tuple = (5) # 단순 정수
  6. tuple() 함수 사용
  7. python
    코드 복사
    my_tuple = tuple([1, 2, 3]) # 리스트를 튜플로 변환

튜플의 주요 기능

  1. 인덱싱(Indexing)
    • 특정 위치의 요소에 접근
    python
    코드 복사
    my_tuple = (10, 20, 30) print(my_tuple[0]) # 출력: 10 print(my_tuple[-1]) # 출력: 30
  2. 슬라이싱(Slicing)
    • 부분적으로 잘라내기
    python
    코드 복사
    print(my_tuple[1:]) # 출력: (20, 30) print(my_tuple[:2]) # 출력: (10, 20)
  3. 길이 확인
  4. python
    코드 복사
    print(len(my_tuple)) # 출력: 3
  5. 요소 존재 여부 확인
  6. python
    코드 복사
    print(20 in my_tuple) # 출력: True print(40 not in my_tuple) # 출력: True
  7. 튜플 병합
  8. python
    코드 복사
    tuple1 = (1, 2) tuple2 = (3, 4) result = tuple1 + tuple2 print(result) # 출력: (1, 2, 3, 4)
  9. 튜플 반복
  10. python
    코드 복사
    print(tuple1 * 3) # 출력: (1, 2, 1, 2, 1, 2)

튜플 메서드

튜플은 불변이므로 사용 가능한 메서드가 제한적입니다.

  1. count(): 특정 요소의 개수 반환
  2. python
    코드 복사
    my_tuple = (1, 2, 2, 3, 2) print(my_tuple.count(2)) # 출력: 3
  3. index(): 특정 요소의 첫 번째 인덱스 반환
  4. python
    코드 복사
    print(my_tuple.index(3)) # 출력: 3

튜플과 리스트 비교

특징튜플(Tuple)리스트(List)

변경 가능 여부 불가능 (Immutable) 가능 (Mutable)
생성 시 사용 기호 소괄호 () 대괄호 []
메모리 효율성 메모리 사용량 적음 메모리 사용량 많음
속도 접근 속도 빠름 다소 느림
사용 목적 변경 불필요한 데이터 저장 데이터의 추가, 삭제, 변경

활용 예시

  1. 변경되지 않는 데이터 그룹
    • RGB 색상, 좌표값 등
    python
    코드 복사
    rgb = (255, 255, 0) coordinates = (37.5665, 126.9780)
  2. 다중 값 반환
  3. python
    코드 복사
    def calculate(a, b): return a + b, a * b result = calculate(5, 3) print(result) # 출력: (8, 15)
  4. 튜플을 키로 사용하는 딕셔너리
    • 튜플은 불변이므로 딕셔너리의 키로 사용 가능
    python
    코드 복사
    my_dict = {("x", "y"): 10, ("a", "b"): 20} print(my_dict[("x", "y")]) # 출력: 10

튜플의 장점

  1. 데이터의 변경 방지가 필요한 경우 유용.
  2. 메모리 사용량이 적고 처리 속도가 빠름.
  3. 딕셔너리의 키 또는 집합(set)의 요소로 사용 가능.

튜플은 안정적이고 변경되지 않는 데이터를 다루는 데 적합합니다. 적절한 경우 리스트 대신 튜플을 사용하면 프로그램의 성능과 안정성을 향상시킬 수 있습니다.

 

 

# [] : 리스트
# {} : 딕셔너리
# () : 튜플

 

tup = {"a", "b","c"}
tup
{'a', 'b', 'c'}
for t in tup :
  print(t)

a

c

b

 

tup2 = ('a', 'a', 'a','b', 'b','c')
tup2
('a', 'a', 'a', 'b', 'b', 'c')

 

print(tup2.count('a'))
print(tup2.count('b'))
print(tup2.count('c'))

3

2

1

 

print(tup2.count('d'))

0

 

print (tup2)
print (tup2.index('a'))
print (tup2.index('b'))
print (tup2.index('c'))

('a', 'a', 'a', 'b', 'b', 'c')

0

3

5

 

x = 10
y = 20

#(x, y) = (y, x)
x, y = y,x

print(f'x : {x}, y: {y}')

 

x : 20, y: 10

 

 

교집합, 합집합, 차집합: 이론과 파이썬 활용


집합 이론은 두 집합 간의 관계를 이해하는 데 중요한 개념입니다. 교집합, 합집합, 차집합은 각각 두 집합에서 공통되는 요소, 전체 요소, 특정 집합의 고유 요소를 찾는 연산입니다.


1. 교집합 (Intersection)

정의:

  • 두 집합에서 공통으로 포함된 원소들의 집합입니다.
  • 수학적 기호: A∩BA \cap B

특징:

  • 교집합에 포함되는 원소는 두 집합 모두에 속해야 합니다.

예제:

  • A={1,2,3},B={2,3,4}A = \{1, 2, 3\}, B = \{2, 3, 4\}
  • A∩B={2,3}A \cap B = \{2, 3\}

파이썬 구현:

python
코드 복사
A = {1, 2, 3} B = {2, 3, 4} # 교집합 연산 intersection = A & B print(intersection) # 출력: {2, 3}

또는:

python
코드 복사
intersection = A.intersection(B) print(intersection) # 출력: {2, 3}

2. 합집합 (Union)

정의:

  • 두 집합에서 하나라도 포함된 원소들의 집합입니다.
  • 수학적 기호: A∪BA \cup B

특징:

  • 중복되는 원소는 한 번만 포함됩니다.

예제:

  • A={1,2,3},B={2,3,4}A = \{1, 2, 3\}, B = \{2, 3, 4\}
  • A∪B={1,2,3,4}A \cup B = \{1, 2, 3, 4\}

파이썬 구현:

python
코드 복사
A = {1, 2, 3} B = {2, 3, 4} # 합집합 연산 union = A | B print(union) # 출력: {1, 2, 3, 4}

또는:

python
코드 복사
union = A.union(B) print(union) # 출력: {1, 2, 3, 4}

3. 차집합 (Difference)

정의:

  • 한 집합에는 포함되고, 다른 집합에는 포함되지 않은 원소들의 집합입니다.
  • 수학적 기호: A−BA - B

특징:

  • A−BA - B는 집합 AA에서 BB의 원소를 제거한 결과입니다.

예제:

  • A={1,2,3},B={2,3,4}A = \{1, 2, 3\}, B = \{2, 3, 4\}
  • A−B={1}A - B = \{1\}
  • B−A={4}B - A = \{4\}

파이썬 구현:

python
코드 복사
A = {1, 2, 3} B = {2, 3, 4} # 차집합 연산 difference = A - B print(difference) # 출력: {1}

또는:

python
코드 복사
difference = A.difference(B) print(difference) # 출력: {1}

4. 대칭 차집합 (Symmetric Difference)

정의:

  • 두 집합 중 하나에만 포함된 원소들의 집합입니다.
  • 수학적 기호: A△BA \triangle B

특징:

  • A△B=(A−B)∪(B−A)A \triangle B = (A - B) \cup (B - A)

예제:

  • A={1,2,3},B={2,3,4}A = \{1, 2, 3\}, B = \{2, 3, 4\}
  • A△B={1,4}A \triangle B = \{1, 4\}

파이썬 구현:

python
코드 복사
A = {1, 2, 3} B = {2, 3, 4} # 대칭 차집합 연산 symmetric_difference = A ^ B print(symmetric_difference) # 출력: {1, 4}

또는:

python
코드 복사
symmetric_difference = A.symmetric_difference(B) print(symmetric_difference) # 출력: {1, 4}

파이썬 집합 연산 요약

연산연산자메서드설명

교집합 & A.intersection(B) 두 집합의 공통 원소
합집합 ` ` A.union(B)
차집합 - A.difference(B) 한 집합에만 포함된 원소
대칭 차집합 ^ A.symmetric_difference(B) 하나의 집합에만 포함된 원소

실생활 활용 예제

  1. 학생 데이터 처리:
    • 교집합: 두 수업 모두 들은 학생.
    • 합집합: 두 수업 중 하나라도 들은 학생.
    • 차집합: 한 수업에만 등록한 학생.
    python
    코드 복사
    class_A = {"Alice", "Bob", "Charlie"} class_B = {"Bob", "Charlie", "David"} print("교집합:", class_A & class_B) # 출력: {'Bob', 'Charlie'} print("합집합:", class_A | class_B) # 출력: {'Alice', 'Bob', 'Charlie', 'David'} print("차집합:", class_A - class_B) # 출력: {'Alice'}
  2. 파일 비교:
    • 교집합: 두 디렉토리에 공통된 파일.
    • 합집합: 전체 파일 목록.
    • 차집합: 특정 디렉토리에만 있는 파일.

집합 연산은 데이터 비교, 필터링, 검색 등에 유용하며, 효율적인 데이터 처리를 지원합니다.

 

set_a = {2, 4, 6}
set_b = {3, 6, 9}

print(set_a & set_b)
print(set_a | set_b)
print(set_a - set_b)

 

 

 

 

 

 

 

LIST