''' 리스트 '''
a=[1,2,3]
print(a[0]) # 1
print(a[1]) # 2
print(a[2]) # 3
print(a[1]+a[2]) #5
print(a[-3]) #1
''' 리스트 인덱싱 '''
a=[['1','7'],2,3,['a','b','c']]
print(a[0][0]) # 1
print(a[1])
print(a[3][1]) # b
''' 리스트 슬라이싱 '''
a=[1,2,3,['a','b','c'],4,5]
print(a[2:5]) # [3, ['a', 'b', 'c'], 4]
print(a[3][:2]) # ['a', 'b']
''' 리스트 연산 '''
a = [1,2,3]
b = [4,5,6]
print(a+b) # [1, 2, 3, 4, 5, 6]
print(len(a)) # 3
print(len(a+b)) # 6
print(a*2) # [1,2,3,1,2,3]
print(a[2]+4) # 7
#print(a[2]+'hi') # 오류 발생(str과 int는 연산 불가능)
''' 리스트 수정 변경 삭제 '''
a = [1,2,3]
a[2]=4
print(a[2]) # 4
print(a[1:2]) # [2]
a[1:2]=['d','e','f']
print(a) # [1,'d','e','f',4]
a = [1,['a','b','c'],'d','e',4]
print(a[1:3]) # [['a', 'b', 'c'], 'd']
a[1:3]=[] # 리스트 삭제
print(a) # [1, 'e', 4]
a = [1,2,['a','b',['KG','IT','Bank']],4,['c','d']]
print(a[2][2][1]) # IT
del a[2][2][1]
print(a) # [1, 2, ['a', 'b', ['KG', 'Bank']], 4, ['c', 'd']]
del a[2][0:2]
print(a) # [1, 2, [['KG', 'Bank']], 4, ['c', 'd']]
print(a[2][0][0]) # KG
''' 리스트 관련 함수 '''
# 리스트에 요소 추가(append), 확장(extend)
a,b = [1,2,3],[4,5]
a.append(4)
print(a) # [1, 2, 3, 4]
a.append([5,6])
print(a) # [1,2,3,4,[5,6]]
a.extend(b)
print(a) # [1, 2, 3, 4, [5, 6], 4, 5]
# 리스트 정렬(sort)
a = [1,4,3,2]
b = ['z','b','t','c']
a.sort()
b.sort()
print(a) # [1, 2, 3, 4]
print(b) # ['b', 'c', 't', 'z']
# 리스트 뒤집기(reverse)
b= ['z','b','t','c']
b.reverse()
print(b) # ['c', 't', 'b', 'z']
# 위치 반환(index): 지정한 숫자를 리스트에서 찾아 위치값을 반환
a = [1,2,3]
print(a.index(1)) # 0
print(a.index(2)) # 1
print(a.index(3)) # 2
# 요소 삽입(insert)
a = [1,2,3]
a.insert(0,4) # insert(삽입할 위치,삽입할 값)
print(a) # [4,1,2,3]
# 요소 제거(remove)
a = [1,2,3,1,2,3]
a.remove(3) # 앞에서 부터 지정한 값을 찾아서 지운다.
print(a) # [1,2,1,2,3]
# 요소 꺼내기(pop): pop(꺼낼 대상 위치)
b = [1,2,3,4,5]
print(b.pop(0)) # 1
print(b) # [2,3,4,5]
print(b.pop(3)) # 5
print(b) # [2,3,4]
# 요소 개수 세기(count)
a = [1,1,2,3]
print(a.count(1)) # 2
''' 튜플 '''
# 리스트와 거의 동일
# 묶음이 ()로 되어 있다.
# 리스트와 달리 값의 생성, 수정, 삭제가 불가능
t1 = ()
t2 = (1,) # 튜플은 요소가 한 개 일 때 ',' 가 있어야 한다.
t3 = (1,2,3)
t4 = 1,2,3
t5 = ('a','b',('ab','cd'))
t6 = (1,2,'a','b')
a = (1,2,'a','b')
b = (3,4,'c','d')
print(a[0],b[3]) # 1 d
print(a[:2],b[1:]) # (1, 2) (4, 'c', 'd')
print(a+b) # (1, 2, 'a', 'b', 3, 4, 'c', 'd')
print(a*4) # (1, 2, 'a', 'b', 1, 2, 'a', 'b', 1, 2, 'a', 'b', 1, 2, 'a', 'b')
a,b = (1,2,3),(4,)
print(a,b) # (1, 2, 3) (4,)
c = a+b
print(c) # (1, 2, 3, 4)
''' 딕셔너리 '''
# 묶음이 '{}' 으로 되어 있다.
# {'key1':'Value1','Key2':'Value',....}
# 연산 시 입력한 순서대로 출력하지 않고 Key를 통한 값을 호출한다.
# 딕셔너리는 서로 병합하거나 값 삭제가 불가능하다.
''' 딕셔너리 생성 '''
dic1 = {'name':'Joon','Phone':'010-8131-1234','birth':'1216'}
dic2 = {1:'Jane'}
dic3 = {'a':[1,2,3]}
print(dic1['name'],dic2[1],dic3['a']) # Joon Jane [1, 2, 3]
''' 딕셔너리 Key와 Value 추가 '''
a = {1:'a'} # Dictionary 선언
a[2] = 'b' # 딕셔너리 추가
print(a) # {1: 'a', 2: 'b'}
''' 딕셔너리 관련 함수 '''
dic1 = {'name':'Joon','phone':'010-1231-1231','birth':'1216'}
print(dic1.keys()) # dict_keys(['name', 'phone', 'birth'])
print(dic1.values()) # dict_values(['Joon', '010-1231-1231', '1216'])
print(dic1.items()) # dict_items([('name', 'Joon'), ('phone', '010-1231-1231'), ('birth', '1216')])
a = dic1.get('name')
print(a) # Joon
dic1.clear()
print(dic1) # {}
''' 가변 변수 '''
var1 = input('값을 입력하세요: ')
print('입력받은 값은 %s입니다.'%var1)
print(f'입력받은 값은 {var1}입니다.')
print('입력받은 값은 {}입니다.'.format(var1))
var2 = int(input('값을 입력하세요: '))
print('입력받은 값은 %d입니다.'%var2)
print(f'입력받은 값은 {var2}입니다.')
print('입력받은 값은 {}입니다.'.format(var2))