Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
Archives
Today
Total
관리 메뉴

행복한 개구리

Python 공부내용 21.09.27 Python - Sets 본문

Python/공부내용

Python 공부내용 21.09.27 Python - Sets

HappyFrog 2021. 9. 27. 23:31

W3Schools의 Python Tutorial을 보며 해석하고 정리한 글입니다.

오역이 존재할 수 있습니다

저도 파이썬은 처음이니 가볍게 봐주세요 :D 

W3Schools


파이썬 set

set

set는 여러 가지 아이템들을 하나의 변수에 저장할 때 쓰입니다.

 

set는 리스트, 튜플, 딕셔너리과 같이 파이썬의 빌트인 컬렉션(모음) 데이터타입이며 이들은 쓰임새와 성질이 다릅니다.

 

set는 정렬되지 않고 인덱스가 없는 컬렉션입니다.

 

set는 중괄호를 사용합니다.

thissset = {"apple", "banana", "cherry"}
print(thisset)

 

주의 : set은 무질서하기때문에 당신은 어떤 순서로 아이템들이 나타날 지 예측할 수 없습니다.

 

set 아이템들

set 아이템들은 무질서하고 불변하며 중복값을 허용하지 않습니다.

 

무질서

무질서하다는 것은 set안의 아이템들은 순서를 정의받지 않는다는 것입니다.

 

set의 아이템들은 그들을 사용할 때마다 다른 순서로 나타나며 인덱스나 키를 이용하여 참조할 수도 없습니다.

 

불변

set가 불변한다는 것은 우리가 set를 생성한 이후로는 set의 아이템을 바꿀 수 없다는 것을 의미합니다.

 

참고 : set가 생성된 이후에 아이템들을 바꿀 수 없지만, 새로운 아이템들을 추가할 수는 있습니다.

 

중복값 불가

set는 같은 값을 가진 복수의 아이템을 가질 수 없습니다.

thisset = {"apple", "banana", "cherry", "apple"}
print(thisset)

▲ 결과값 // 중복값이 들어간 "apple"은 자동적으로 하나로 합쳐지며 출력할 때마다 순서가 무작위로 바뀝니다

 

set의 길이 받아오기

set가 얼마나 많은 아이템을 가지고 있는지 알아내려면  len()  메서드를 사용하면 됩니다.

thisset = {"apple", "banana", "cherry"}
print(len(thisset))

▲ 결과값

 

set 아이템 - 데이터 타입

set의 아이템들은 Boolean, String, Int 형식의 타입이 될 수 있습니다.

set1 = {"apple", "banana", "cherry"}
set2 = {1, 5, 7, 9, 3}
set3 = {True, False, False}
set4 = {"apple", 1, True}

print(set1)
print(set2)
print(set3)
print(set4)

▲ 결과값 // 데이터타입을 섞어 쓸 수 있지만 True와 1이 겹쳐 True가 생략된 모습입니다

 

type()

파이썬에서는 set의 데이터타입을 'set'로 정의합니다.

myset = {"apple", "banana", "cherry"}
print(type(myset))

▲ 결과값 // 'set'클래스라고 나옵니다

 

set() 구조체

 set()  구조체를 사용하여 set을 만드는 것 또한 가능합니다.

thisset = set(("appel", "banana", "cherry"))	# 소괄호를 두 번 씁니다
print(thisset)

▲ 결과값

 

파이썬의 컬렉션 (배열들)

파이썬에는 4가지의 컬렉션 데이터타입이 존재합니다.

  • 리스트는 순서가 있고 가변적입니다. 중복값을 허용합니다.
  • 튜플은 순서가 있고 불변적입니다. 중복값을 허용합니다.
  • 세트는 순서와 인덱스가 없습니다. 중복값을 허용하지 않습니다.
  • 딕셔너리는 순서가 있고 가변적입니다. 중복값을 허용하지 않습니다.

 

* 참고 : 파이썬 3.7버전에서는 딕셔너리에 순서가 있지만, 3.6버전 이하에서는 딕셔너리에 순서가 없습니다.


파이썬 - Set 아이템 접근하기

아이템들에 접근하기

당신은 Set의 아이템들에는 인덱스나 키를 참조하여 접근할 수 없습니다.

 

그러나  for  반복문 또는  in  을 사용하여 존재하는 Set의 특정한 값을 특정해서 접근할 수 있습니다.

thisset = {"apple", "banana", "cherry"}

for x in thisset:
    print(x)

▲ 결과값

 

thisset = {"apple", "banana", "cherry"}

print("banana" in thisset)

▲ 결과값


파이썬 - Set 아이템 추가하기

아이템 추가하기

Set에 아이템을 추가하기 위해서는  add()  메서드를 사용합니다.

thisset = {"apple", "banana", "cherry"}
thisset.add("orange")
print(thisset)

▲ 결과값

 

Set 추가하기

다른 set의 아이템들을 현재의 set에 추가하기 위해서는  update()  메서드를 사용합니다.

thisset = {"apple", "banana", "cherry"}
tropical = {"pineapple", "mango", "papaya"}

thisset.update(tropical)

print(thisset)

▲ 결과값

 

아무 Iterable 추가하기

 update()  메서드는 set뿐만 아니라 다른 iterable 객체인 튜플, 리스트, 딕셔너리 등에도 사용할 수 있습니다.

thisset = {"apple", "banana", "cherry"}
mylist = ["kiwi", "orange"]

thisset.update(mylist)

print(thisset)

▲ 결과값


파이썬 - Set 아이템 지우기

아이템 지우기

Set 안에 존재하는 아이템을 없애기 위해서는  remove()  또는  discard()  메서드를 사용합니다.

thisset = {"apple", "banana", "cherry"}

thisset.remove("banana")

print(thisset)

▲ 결과값

 

주의 : 지울 아이템이 존재하지 않아도  discard()  메서드는 에러를 발생하지 않습니다

 

또한 당신은  pop()  메서드를 사용하여 하나의 아이템을 제거할 수 있습니다. 하지만 이 메서드는 마지막 아이템을 삭제합니다. Set는 무질서하기 때문에 우리는 무엇이 사라질지 알 수 없습니다.

 

 pop()  메서드의 반환값은 지워질 아이템입니다.

thisset = {"apple", "banana", "cherry"}

x = thisset.pop()

print(x)

print(thisset)

▲ 결과값

 

 clear()  메서드는 set을 비워줍니다.

thisset = {";apple", "banana", "cherry"}

thisset.clear()

print(thisset)

▲ 결과값

 

 del  키워드는 set을 완전하게 지워줍니다.

thisset = {";apple", "banana", "cherry"}

del thisset

print(thisset)

▲ 결과값 // set이 완전히 지워져서 오류가 납니다


파이썬 - Set 반복하기

아이템들 반복하기

당신은 set의 아이템들을  for  반복문을 통하여 반복시킬 수 있습니다.

thisset = {"apple", "banana", "cherry"}

for x in thisset:
    print(x)

▲ 결과물


파이썬 - Set 합치기

복수의 Set들 합치기

파이썬에서는 여러가지의 set들을 합치는 방법이 존재합니다.

 

당신은  union()  메서드를 사용하여 두가지의 set들이 합쳐져 새롭게 만들어진 set를 반환할 수 있습니다. 또는  update()  메서드를 사용하면 기존의 set에 합치고 싶은 set를 삽입할 수 있습니다.

set1 = {"a", "b", "c"}
set2 = {1, 2, 3}

set3 = set1.union(set2)
print(set3)

▲ 결과물 // set1과 set2가 합쳐져 새로운 객체인 set3가 생겨났습니다.

 

set1 = {"a", "b", "c"}
set2 = {1, 2, 3}

set1.update(set2)
print(set1)

▲ 결과물 // set1에 set2가 삽입됐습니다.

 

중복값만 유지하기

 intersection_update()  메서드를 사용하면 두개의 set에서 값이 중복되는 아이템만 가져올 수 있습니다.

x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

x.intersection_update(y)

print(x)

▲ 결과값 // 겹치는 값을 추려내면서 기존 객체(x)에 유지되는 형식입니다.

 

 intersection()  메서드는 중복값을 추려내어 새로운 set을 생성해주는 메서드입니다.

x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z = x.intersection(y)

print(z)

▲ 결과값 // intersection_update와의 차이는 새로운 객체를 생성하는 여부입니다

 

중복되지 않는 값 추려내기

 symmetric_difference_update()  메서드는 두 개의 set에서 중복되지 않는 값만 추려내는 메서드입니다.

x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

x.symmetric_difference_update(y)

print(x)

▲ 결과값 // 중복값을 구할 때와 마찬가지로 뒷부분에 update가 붙으니 기존객체에 값 변경이 되는 형식으로 구현됩니다

 

 symmetric_difference()  메서드를 생성하면 두 개의 set에서 중복되지 않는 값을 새로운 set에 할당하여 반환합니다.

x = {"apple", "banana", "cherry"}
y = {"google", "microsoft", "apple"}

z= x.symmetric_difference(y)

print(z)

▲ 결과값


파이썬 - Set에서 쓸 수 있는 메서드

Set 메서드들

파이썬은 set에서 사용할 수 있는 빌트인 메서드를 가지고 있습니다.

출처 W3Schools