tuple: 불변의 순서쌍을 만들어내는 내장 타입
- 딕셔너리의 키-값 쌍과 비슷하게 두 값으로 이뤄짐
snack_calories = {
'감자칩':140,
'팝콘':80,
'땅콩':190,
}
items = tuple(snack_calories.items())
print(items)
#(('감자칩':140),('팝콘',80),('땅콩',190))
item = ('호박엿','식혜')
first = item[0]
second = item[1]
print(first, '&', second)
#호박엿 & 식혜
pair = ('약과', '호박엿')
pair[0] = '타래과'
#error: tuple object does not support item assignment
언패킹 구문 사용 시 한 문장 안에서 여러 값을 대입
튜플이 쌍일 경우 인덱스 대신 두 변수의 이름으로 이뤄진 튜플에 대입
item = ('호박엿','식혜')
first, second = item #언패킹
print(first, '&', second)
#호박엿 & 식혜
튜플 인덱스를 사용하는 것보다 시각적인 잡음이 적다
리스트, 시퀀스, 이터러블 안에 여러 계층으로 이터러블이 들어있다면 다양하게 언패킹 가능
favorite_snacks = {
'짭조름한 과자': ('프레즐',100)
'달콤한 과자': ('쿠키',180),
'채소': ('당근', 20),
}
((type1, (name1,cals1)),
(type2, (name2,cals2)),
(type3, (name3, cals3)))) = favorite_snacks.items()
print(f'제일 좋아하는 {type1}는 {name1}, {cals1}칼로리입니다.')
print(f'제일 좋아하는 {type2}는 {name2}, {cals2}칼로리입니다.')
print(f'제일 좋아하는 {type3}는 {name3}, {cals3}칼로리입니다.')
#결과
제일 좋아하는 쩝조름한 과자 는 프레줄, 100 칼로리입니다.
제일 좋아하는 달콤한 과자 는 쿠키, 180 칼로리입니다 .
제일 좋아하는 채소 는 당근, 20 칼로 입니다 .
def bubble_sort(a):
for _ in range(len(a)):
for i in range(1,len(a)):
if a[i] < a[i-1]:
temp = a[i]
a[i] = a[i-1]
a[i-1] = temp
names = ['프레즐','당근','쑥갓','베이컨']
bubble_sort(names)
print(names)
#['당근','베이컨','쑥갓','프레즐']
def bubble_sort(a):
for _ in range(len(a)):
for i in range(1,len(a)):
if a[i] < a[i-1]:
a[i-1], a[i] = a[i], a[i-1] #맞바꾸기
names = ['프레즐','당근','쑥갓','베이컨']
bubble_sort(names)
print(names)
#['당근','베이컨','쑥갓','프레즐']
for루프 또는 비슷한 다른 요소의 대상인 리스트의 원소를 언패킹
코드가 짧아지고 인덱스를 사용할 이유가 없음
#사용 전
snacks = '베이컨’ , 350), '도넛' , 240), '머핀', 190) l
for i in range(len (snacks) ) :
item = snacks[i]
name = 1tem[0 ]
calories = item [1]
print (f ·#{i+ 1}: {name} 은 {calories} 칼로리입니다 , ' )
»>
#1 : 베이컨 은 350 칼로리입니다
#2: 도넛 은 240 칼로리입니 다
#3: 머핀 은 190 칼로리입니다 .
#사용 후
for rank, (name, calories) in enumerate(snacks, 1):
print(f'#{rank}: {name}은 {calories} 칼로리입니다.')
#1 : 베이컨 은 350 칼로리입니다.
#2: 도넛 은 240 칼로리입니다.
#3: 핀 은 190 칼로리입니다.