추가적으로, 튜플과 리스트는 각각 list(), tuple() 내장 함수로 상호 변환이 가능합니다. 아래 코드는 상호 변환을 통해 튜플의 값을 변환 한 코드입니다.
----------------------------------------------------------------------------------------
T=1,2,3,4,5
L=list(T)
print L
L[0]=6
T=tuple(L)
print T
----------------------------------------------------------------------------------------
(실행 결과)
[1, 2, 3, 4, 5]
(6, 2, 3, 4, 5)
----------------------------------------------------------------------------------------
집합 자료형은 set() 내장 함수를 사용하는 자료형으로 변경이 가능하고, 각 원소간에 순서가 없어서 중복이 불가능한 자료형입니다. 따라서, 시퀀스 자료형 처럼 인덱싱이나 슬라이싱이 불가능합니다.
set()내장함수의 인자로는 리스트, 튜플, 사전, 문자열이 사용 가능하며, 문자열은 'abc'일경우 a,b,c 각각 저장됩니다.
사전의 경우 key값만 저장되며 value만을 저장하고 싶을때는 .vlaues() 메소드를 사용합니다. 집합 자료형의 생성은 아래와 같습니다.
----------------------------------------------------------------------------------------
# 집합 자료형 생성
a=set([(1,2,3)])
print type(a)
print a
b=set('abc')
print type(b)
print b
c=set({'one':1,'two':2})
print type(c)
print c
# 빈 set 객체 생성
d=set()
print d
----------------------------------------------------------------------------------------
(실행 결과)
<type 'set'>
set([(1, 2, 3)])
<type 'set'>
set(['a', 'c', 'b'])
<type 'set'>
set(['two', 'one'])
set([])
----------------------------------------------------------------------------------------
set을 이용해 할 수 있는 연산은 len()을 이용해 집합의 원소의 수를 알수있는 것과, 멤버십 테스트(in, not in) 연산이 있습니다.
set의 주요 메소드는 다음과 같습니다. 수학시간에 배운 집합을 생각하시면 편합니다. 새로운 집합을 반환하는 메소드와 기존 집합을 변경하는 메소드로 나뉩니다.
----------------------------------------------------------------------------------------
# 새로운 집합을 반환하는 메소드
1. issubset() : 부분집합인지 알아보는 메소드
s<=t
2. issuperset() : 슈퍼집합인지(포함 하는지) 알아보는 메소드
s>=t
3. uion() : 새로운 집합과 합집합을 반환하는 메소드
s|t
4. intersection() : 새로운 집합과 교집합을 반환하는 메소드
s&t
5. difference() : 새로운 집합과 기존집합의 차집합을 반환하는 메소드
s-t
6. symmetric_difference() : 새로운 집합과 기존집합의 배타집합( s∪t - s∩t)을 반환하는 메소드
s^t
7. copy() : 집합을 복사하는 메소드로 값은 같지만 같은 집합은 아님
D=A.copy()
D==A # True
D is A # False
# 기존 집합을 변경하는 메소드
1. update() : 집합을 변경하는 메소드
- s.update(t) : s와 t의 합집합을 s에 저장
s |= t
- s.intersection_update(t) : s와 t의 교집합을 s에 저장
s &= t
- s.difference_update(t) : s와 t의 차집합을 s에 저장
s -= t
- s.symmetric_difference_update(t) : s와 t의 배타집합을 s에 저장
s ^= t
2. s.add(x) : 원소 x를 집합 s에 추가하는 메소드
3. s.remove(x) : 원소 x를 집합 s에서 제거하는 메소드로 원소 x가 없으면 에러발생
4. s.discard(x) : 원소 x를 집합 s에서 제거하는 메소드로 원소 x가 없어도 에러가 발생하지 않음
5. s.pop() : 임의의 원소 x를 집합 s에서 제거하는 메소드로, s가 공집합이면 에러 발생
6. s.clear() : 집합 s의 모든 원소를 제거하는 메소드
----------------------------------------------------------------------------------------
위의 메소드를 모두 실행 하기에는 무리가 있어 간단하게 사용해 봤습니다.
----------------------------------------------------------------------------------------
A=set([1,2,3,4,5])
B=set([3,4,5,6,7])
A.update(B)
print A
A.add(10)
print A
A.pop()
print A
----------------------------------------------------------------------------------------
(실행 결과)
set([1, 2, 3, 4, 5, 6, 7])
set([1, 2, 3, 4, 5, 6, 7, 10])
set([2, 3, 4, 5, 6, 7, 10])
----------------------------------------------------------------------------------------