#!/usr/bin/env python
# coding: utf-8

# # 2-4 튜플 자료형
# 
# - 리스트는 []으로 둘러싸지만 튜플은 ()로 둘러싼다.
# - 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.

# In[1]:


t1 = ()
t2 = (1,)
t3 = (1,2,3)
t4 = 1, 2, 3
t5 = ('a', 'b', ('ab','cd'))


# In[3]:


print(t1)
print(t2)
print(t3)
print(t4)
print(t5)


# ## 리스트와 튜플의 다른 점
# 
# - 튜플에서는 t2처럼 단 하나의 요소만 가져도 뒤에 콤마(,)를 반드시 붙여야 한다.
# - t4 = 1, 2, 3 처럼 괄호()를 생략해도 무방하다.
# 
# 튜플과 리스트는 구별해서 사용하는 것이 유리하다. 가장 큰 차이점이
# 
# - ❗ 리스트의 항목 값은 변화가 가능하지만, 튜플의 항목 값은 변화가 불가능하다.
# 
# 따라서 프로그램이 실행되는 동안 값이 변하지 않길 바라거나 바뀔 우려가 있을 땐 튜플을 사용해야 한다. 반대로 수시로 값이 변화한다면 리스트를 사용해야 한다. 실제 프로그램에서는 값이 변경되는 형태의 변수가 훨씬 더 많기 때문에 튜플보다 리스트를 더 많이 사용한다.
# 
# 튜플의 요솟값을 지우거나 변경하려면 어떻게 될까?
# - ❗ 튜플은 요소를 지우거나 변경이 불가능하다.

# In[4]:


# 1. 튜플 요솟값을 삭제하려 할 때
t1 = (1, 2, 'a', 'b')
del t1[0]


# In[5]:


# 2. 튜플 요소값을 변경하려 할 때
t1 = (1, 2, 'a', 'b')
t1[0] = 'c'


# In[6]:


# 튜플 다루기
# 인덱싱하기
t1 = (1, 2, 'a', 'b')
t1[0]


# In[7]:


t1[3]


# In[8]:


# 슬라이싱 하기
t1 = (1, 2, 'a', 'b')
t1[1:]


# In[9]:


# 튜플 더하기
t2 = (3, 4)
t1 + t2


# In[10]:


# 튜플 곱하기
t2 * 3


# In[11]:


# 튜플 길이 구하기
t1 = (1, 2, 'a', 'b')
len(t1)


# In[12]:


t1 = (1,2,3)
t1


# In[14]:


a = (4,)


# In[15]:


t1 + a

