tuple, set

Nam Eun-Ji·2020년 11월 26일
0

tuple

tuple_name = (element1, element2, ...)
  • 한번 선언되면 수정 불가능 immutable
  • 괄호 생략 가능
  • 순서가 있기 때문에 index 사용가능
  • tuple은 주로 list와 같이 사용됨
list = [(1,2), (1,3), (1,4)]

물론 list[list]도 가능하지만 list는 수정이 가능하고 여러 요소들을 저장할 수 있도록 하였기 때문에 tuple보다 차지하는 메모리용량이 크다. 때문에 수정이 필요없고 간단한 형태의 테이터를 표현할 때 tuple을 사용하는게 효과적이다.

list = [ [1,2], [1,3], [1,4] ]
list = [ (1,2), (1,3), (1,4) ]

tuple이 하나의 element만 존재할 경우 tuple이 되지 않는다. 대신 하나의 element 뒤 콤마를 찍어주면 tuple이 된다.

list = (1)     # <class 'int'>
list = (1,)    # <class 'tuple'>

형변환

a = 'string'
b = tuple(a)
print(b)                 # ('s', 't', 'r', 'i', 'n', 'g')
tuple([1, 7, 5, 3, 9])   # (1, 7, 5, 3, 9)





set

set = {element1, element2, ...}
  • set함수를 사용할 때는 list로 전달해줘야 한다. 그래서 보통 list를 set으로 바꾸고 싶을 때 사용.
  • list와 달리 순서대로 저장되어 있지 않음
  • mutable
  • 중복된 값이 존재할 수 없다. 때문에 새로 저장하려는 요소가 기존에 있다면 새로운 요소가 기존 요소를 치환한다.
set1 = {1, 2, 3, 1}
print(set1)      # {1, 2, 3}

set 내부에는 다양한 형식의 값을 가질 수 있지만, mutable한 값은 가질 수 없다.

set1 = { "hello", 1, (1,2) }
set2 = { "hello", 1, (1,2), [1,2] }
print(set2)     # TypeError: unhashable type: 'list'
set3 = { "hello", 1, (1,2), {1,2} }
print(set3)     # TypeError: unhashable type: 'set'

set과 dict는 동일한 중괄호{}를 사용하므로 빈 중괄호만으로 생성이 어렵기 때문에 set함수를 사용

set1 = {}
print(type(set1))    # <class 'dict'>
set2 = set()
print(type(set2))    # <class 'set'>
print(set2)          # set()

요소추가 : .add()

set1 = { 1, 2, 3 }
set1.add(4)
print(set1)     # { 1, 2, 3, 4 }

여러 요소 추가 : .upload()

set1 = { 1, 2, 3 }
set1.update([3, 4, 5])
print(set1)    # {1, 2, 3, 4, 5}

요소 삭제 : .remove()

삭제하려는 요소가 set안에 없으면 keyError 발생

set1 = { 1, 2, 3 }
set1.remove(2)
print(set1)      # { 1, 3 }
set1.remove(2)   # KeyError: 2

요소 삭제 : .discard()

삭제하려는 요소가 set안에 없어도 에러발생 없음

set1 = { 1, 2, 3 }
set1.discard(2)
print(set1)      # { 1, 3 }
set1.discard(2)

요소 복사 : .copy() / set(원본)

.copy()

set1 = { 1, 2, 3 }
set2 = set1.copy()
print(set2)     # { 1, 2, 3 }

set(원본) : set함수를 이용해 복사

set1 = { 1, 2, 3 }
set2 = set(set1)
print(set2)     # { 1, 2, 3 }

look up : in 키워드

set에서 어떠한 값이 포함되어 있는지 체크

set1 = { 1, 2, 3 }
print( 1 in set1 )    # True
print( 4 in set1 )    # False

교집합 : & , .intersection()

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
print( set1 & set2 )    # {4, 5, 6}
print(set1.intersection(set2))   # {4, 5, 6}

합집합 : | , .union()

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
print( set1 | set2 )       # {1, 2, 3, 4, 5, 6, 7, 8, 9}
print( set1.union(set2) )  # {1, 2, 3, 4, 5, 6, 7, 8, 9}

차집합 : - , .difference()

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
print( set1 - set2 )              # {1, 2, 3}
print( set1.difference(set2) )    # {1, 2, 3}

대칭차집합(합집합-교집합) : ^

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}
set3 = set1 ^ set2
print(set3)     # {1, 2, 3, 7, 8, 9}
profile
한 줄 소개가 자연스러워지는 그날까지

0개의 댓글