# 시작과 끝 인덱스가 다르면 값 변경
>>> list_a = [1, 2, 3, 4]
>>> list_a[0:2]=[100] #인덱스 0은 100으로 변환, 1은 삭제
[100, 3, 4]
# 시작과 끝 인덱스가 같으면 삽입
>>> list_b = [1, 2, 3, 4]
>>> list_b[1:1] = [100]
[1, 100, 2, 3, 4]
튜플과 리스트의 공통점
임의의 객체를 저장할 수 있다는 것과 순서(sequence) 자료형이다.
튜플과 리스트 모두 이종의 요소를 가질 수 있다.
튜플과 리스트의 차이점
튜플은 변경 불가능한 순서(sequence) 자료형이다.
튜플은 함수의 가변 인수를 지원한다.
튜플의 리터널 표현법은 ()소괄호이다.
>>> c = (1)
>>> type(c) # 요소 1개를 튜플로 지정하려 했지만 int로 나옴 이럴땐?
int
c = (1,) # 요소 뒤에 ,를 쓰면 튜플로 지정 가능!
type(c)
tuple
>>> a = 1, 2, 3
>>> type(a)
typle
>>> b = 1,
>>> type(b)
typel
>>> a, b = 1, 2
>>> print(a, type(a))
>>> print(b, type(b))
1 <class 'int'>
2 <class 'int'>
>>> c = 3, 4
>>> a, b = c
>>> print(a, type(a))
>>> print(b, type(b))
3 <class 'int'>
4 <class 'int'>
>>> a = 1, 2, 3
>>> a[2] #인덱스로 가져오면 int 형태로 리턴
3
>>> a = 1, 2,3
>>> a[2:3] # 슬라이싱으로 가져오면 튜플의 형태로 리턴
(3,)
>>> a = ((1, 2), (3, 4))
>>> b, c = a
>>> print(b)
>>> print(c)
(1, 2)
(3, 4)
>>> (x, y),(z, k) = a
>>> x, y
(1, 2)
# a = 1, 나머지 2, 3, 4, 5는 list 형태로 b로 가져옴
>>> a, *b = (1, 2, 3, 4, 5)
>>> print(a, type(a))
>>> print(b, type(b))
1 <class 'int'>
[2, 3, 4, 5] <class 'list'>
# a = 1, 2, 3, 4로 지정하고 5는 b로 가져옴
*a, b = (1, 2, 3, 4, 5)
print(a, type(a))
print(b, type(b))
[1, 2, 3, 4] <class 'list'>
5 <class 'int'>
# *a, *b 사용은 불가함
>>> def calc(a, b):
return a+b, a * b # 튜플을 반환한다.
>>> x, y =calc(5, 4)
>>> print(x, y)
9 20
# 집합의 중복을 허용하지 않는 특징
>>> a = {1, 2, 3, 3, 3}
>>> a
{1, 2, 3}
# 순서가 유지되지 않는 특징
>>> a = {2, 1, 5, 3, 4}
>>> a
{1, 2, 3, 4, 5} # 오름차순 리턴
# 이종데이터를 가질 수 있는 특징
>>> a = {'가', 1, True, 0, False, '집합'} #True = 1, False = 0으로 인식된다. 둘 중 먼저 있는 값이 출력됨
>>> a
{0, 1, '가', '집합'} # 0, 1이 더 먼저 나옴
a = {'가', True, 1, False, 0, '집합'} #True = 1, False = 0으로 인식된다. 둘 중 먼저 있는 값이 출력됨
a
{False, True, '가', '집합'} # T/F가 더 먼저 나옴
>>> a[0:1]
TypeError Traceback (most recent call last)
<ipython-input-174-80d608c6034a> in <module>
1 # set은 sequence가 아니므로 index와 slice를 사용할 수 없다.
----> 2 a[0:1]
멤버십(원소와 집합사이의 귀속관계)검사, 시퀀스에서의 중복제거와 교집합, 합집합, 차집합 같은 수학연산 수행에 사용된다.
다른 시퀀스(sequence)와 마찬가지로, x in set, len(set), 컴프리헨션과 같은 기능을 제공하지만, 삽입순서를 기록하지는 않는다. 따라서 인덱싱이나 슬라이싱은 사용이 불가능하다.
반복 가능한(Iterable)객체로 부터 집합을 만들 수 있지만 모든 데이터가 원소로 사용 할 수 있는 것은 아니다. 해시가능(Hashable) 이면서 변경 불가능한 자료형만이 집합의 원소로 사용 가능하다.