()
를 사용함, 정의할 땐 괄호를 붙이지 않음abc_ = ()
def_ = []
print(type(abc_),type(def_)) # <class 'tuple'> <class 'list'>
eggs = ('hello', 42, 0.5)
print(eggs[0]) # hello
print(eggs[1:3]) # (42, 0.5)
print(len(eggs)) # 3
colors = 'red','green','blue','yellow'
print(type(colors)) # <class 'tuple'>
colors = ('red','green','blue','yellow')
print(type(colors)) # <class 'tuple'>
colors = '변수가 바뀐 것'
print(type(colors)) # <class 'str'>
# 리스트<->튜플 타입 변경가능
# 리스트는 read, write 가능, 튜플을 read만 가능하기 때문에 값을 변경하지 않는 경우에만 사용 가능
# tuple -> list
colors = 'red','green','blue','yellow'
list(colors)
# list -> tuple
colors = ['red','green','blue','yellow']
tuple(colors)
#리스트 범위 설정 후 출력
colors = ['red','blue','gold']
print(colors[0]) # red
print(colors[0:]) # ['red', 'blue', 'gold']
print(colors[1:3]) # ['blue', 'gold']
print(colors[1::-1]) # ['blue', 'red']
anything = [10,'텍스트',3.14]
print(anything[0])
print(anything[1])
print(anything[2])
# .insert() 리스트 요소 삽입
anything.insert(0,'insertTest')
print(anything)
# del 요소 삭제
del anything[2]
print(anything)
# 리스트 범위 설정 후 출력
colors = ['red','blue','gold']
print(colors[0])
print(colors[0:])
print(colors[1:3])
print(colors[1::-1])
# extend 리스트 끝에 항목을 추가한다.
colors.extend(['yellow','green'])
print(colors) # ['red', 'blue', 'gold', 'yellow', 'green']
# append
colors.append('black')
print(colors) # ['red', 'blue', 'gold', 'yellow', 'green', 'black']
# 리스트의 특정 인덱스에 값을 추가할 수 있다.
colors[2]='silver'
print(colors)
print(colors[2])
print(colors[0])
print(colors)
print(colors.index('blue'))
print(colors.index('yellow',1)) #값을 찾을 범위를 인덱스 위치로 지정할 수 있다.
append 와 extend의 차이점
append()는 이처럼 리스트 전체를 또 다른 엘리먼트로 처리한다. 반면 extend()는 삽입 대상의 리스트를 풀어서 각각의 엘리먼트로 확장(Extend)해 삽입한다.
#리스트 안에 리스트가 있으면 하나의 요소로 친다.
color1=['red', 'blue', 'gold', 'yellow', 'green', 'black']
color2=['red', 'blue', 'gold', 'yellow', ['green', 'black']]
print('color1의 길이는?',len(color1)) # color1의 길이는? 6
print('color2의 길이는?',len(color2)) # color2의 길이는? 5
# 해당 리스트가 있는지 확인 -> 각각의 요소를 확인하지 않는다.
print('red' in color2) # True
print(['red','yellow'] in color2) # False
# pop()
while len(colors) > 0:
print(colors.pop())
# for
t = list(range(4))
print(t)
for i in t:
print(i)
# 리스트 길이만큼 반복문 실행
supplies = [
'pens','staplers','flamethroewer','binders'
]
for i in range(len(supplies)):
print(f'index{i} in suppliesis : {supplies[i]}')
# enumerate를 이용해 리스트를 인덱스,값을 함께 출력
list(enumerate(supplies))
# enumerate를 이용한 for문
for i,supply in enumerate(supplies):
print(f'index {i} in supplies is : {supply}')
cat = ['fat','gray','loud']
size = cat[0]
color = cat[1]
disposition = cat[2]
print(size,color,disposition) # fat gray loud
# 위와 아래는 같은 결과지만 아래가 더 간단하므로 아래와 같은 방식을 지향하도록 한다.
cat = ['fat','gray','loud']
size,color,disposition = cat #리스트를 튜플 방식으로 언팩킹 가능하다.
print(size,color,disposition)
inline for문을 사용하여 요소를 꺼내올 수도 있다.
prices_list = [1,2,3]
result = [print(item) for item in prices_list]
# 1
# 2
# 3
inline for문 사용 시 주의사항
result = [None]
이므로result
가 생략되면 값 출력 후[None,None...]
이 함께 출력되버린다.
key
딕셔너리의 인덱스, 다양한 자료형 사용 가능key : value
형태test_dict = {'이름':'홍길동', '나이':2, '직업':'의적'}
print(test_dict) # {'이름': '홍길동', '나이': 2, '직업': '의적'}
test_dict = {'이름':'홍길동', '나이':2, '직업':'의적'}
# 키가 '이름'인 것을 찾아 값을 변경
test_dict['이름'] = '김아무개'
print(test_dict) # {'이름': '김아무개', '나이': 2, '직업': '의적'}
# 빈 딕셔너리에 키와 값을 넣을 수 있다.
aaa = {}
aaa['pos']=1
aaa['toc']=2
print(aaa)
딕셔너리에 key만 있고 value가 없는 경우 기본값 설정 가능
d = {'one': 1, 'two': 2, 'three': 3}
print(d.setdefault('one')) # 1
d.setdefault('four',4) # four : 4
print(d.setdefault('four')) # 4
aaa = {'pos':1,'toc':2}
del aaa['pos']
print(aaa) # {'toc': 2}
# 딕셔너리 aaa에 'pos' 가 있으면 삭제하는 조건문
if aaa.get('pos'):
print('지울게')
del aaa['pos']
else:
print('지울게 없음')
ham = {'spec':'cat', 'name':'bom', 'age':8}
# 딕셔너리에 있는 key-value를 리스트 형태로 가져오기
print(list(ham.items()))
# [('spec', 'cat'), ('name', 'bom'), ('age', 8)]
# 딕셔너리에 있는 key-value을 for문으로 가져오기(1)
for item in ham.items():
print(item)
# ('spec', 'cat')
# ('name', 'bom')
# ('age', 8)
# 딕셔너리에 있는 key-value을 for문으로 가져오기(2)
for k,v in ham.items():
print(k,v)
# spec cat
# name bom
# age 8
딕셔너리 사용 시 주의사항
dict
를 변수명으로 사용하지 말 것!
dict()
함수가 따로 있기 때문에dict
를 변수명으로 사용해버리면 함수를 사용할 수 없게 된다. 만약 함수명을 변수명으로 사용해버렸다면del 변수명
으로 변수를 삭제해주자.
딕셔너리에 key나 value의 존재 여부 True, False로 확인 가능
ham = {'spec':'cat', 'name':'bom', 'age':8}
print('name1' in ham.keys()) # False
print('cat' in ham.values()) # True
for문으로 사용하면 딕셔너리의 key 또는 value만 꺼낼 수 있다.
# 딕셔너리의 key/value를 꺼내오기
prices_dict = {1:'mango',2:'apple',3:'banana'}
for item in prices_dict.items():
print(item)
# (1, 'mango')
# (2, 'apple')
# (3, 'banana')
for k in prices_dict.keys():
print(k)
# 1
# 2
# 3
for v in prices_dict.values():
print(v)
# mango
# apple
# banana
spam = [1,2,3,4,5]
cheese = spam
print(cheese,spam) # [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
# cheese와 spam은 같은 주소를 가리키고 있기 때문에 동일하게 출력된다.
cheese[1] = 'hello'
print(cheese, spam)
# [1, 'hello', 3, 4, 5] [1, 'hello', 3, 4, 5]
# 리스트의 주소가 아닌 값을 카피하기 위해서는 copy 모듈이 필요하다.
import copy
spam = [1,2,3,4,5]
cheese = copy.copy(spam) # copy패키지 안 copy()를 사용 -> 다른 주소에 spam의 리스트를 카피한다.
print(spam, cheese) # [1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
cheese[1]='치즈'
print(spam, cheese) # [1, 2, 3, 4, 5] [1, '치즈', 3, 4, 5]
# cheese와 spam은 다른 주소를 가리키고 있기 때문에 서로 다른 리스트를 출력한다.