menu = ['파스타','돈가스','치킨']
menu.append('식빵')
menu
['파스타', '돈가스', '치킨', '식빵']
▶ menu=menu.append('식빵')으로 적는다면, return이 없는 함수이므로 none이 반환됨을 주의!
[실습2] menu에서 세번째 메뉴를 '우동'으로 변경하고 세번째~마지막 메뉴를 선택하여 출력하세요
menu[2]='우동'
menu[2:]
['우동', '식빵']
[실습3] '메뉴이름' 키에는 메뉴이름이, '가격' 키에는 해당 메뉴의 가격이 입력된 딕셔너리 하나를 생성하세요
menu_d ={'메뉴이름':'우동','가격':7000}
☆[실습4] 다음 리스트 내부에 값을 1씩 더한 값으로 수정하여 리스트를 출력하세요
내 코드>
nums = [1,2,3,4,5]
nums = [x + 1 for x in nums]
print(nums)
풀이 코드> 두가지 버전
nums = [1,2,3,4,5]
for i, n in enumerate(nums):
nums[i] = n+1
nums
for i in range(len(nums)): #range(5)가 됨
nums[i] += 1
nums
[2, 3, 4, 5, 6]
▶ enumerate를 활용한 방법은 데이터에 접근해서 수정하는거라 더 깔끔한 것 같다!
★[실습5] 다음 두개의 리스트를 활용하여 실습3 에서 구성한 형태의 딕셔너리를 3개 만들고 이를 보관하는 리스트를 만들어 출력하세요
내 코드>
menu = ['치킨','피자','국밥']
price = [20000, 23000, 10000]
menu1 = {'메뉴이름':'치킨','가격':20000}
menu2 = {'메뉴이름':'피자', '가격':23000}
menu3 = {'메뉴이름':'국밥', '가격':10000}
menu_list=[menu1,menu2,menu3]
menu_list
풀이 코드>
menus = []
for i in range(len(menu)):
d = {}
d['메뉴이름'] = menu[i]
d['가격'] = price[i]
menus.append(d)
menus
[{'메뉴이름': '치킨', '가격': 20000},
{'메뉴이름': '피자', '가격': 23000},
{'메뉴이름': '국밥', '가격': 10000}]
▶ range(len())을 활용하여 더 간단하게 만들 수 있음
for문을 활용해서 접근하는 것 연습 필요!
[실습6] 실습5에서 만든 리스트에서 1번 메뉴의 가격을 인덱싱하여 출력하세요
내 코드>
menu1 ['가격']
풀이 코드>
menus[1]['가격']
20000
[실습7] 다음 세 리스트를 이어붙이고 이름 순으로 정렬하여 출력하세요
list1 = ['a','f','c']
list2 = ['b','e']
list3 = ['a','f']
내 코드>
list_sub = list1 + list2 + list3
list_sub.sort()
print(list_sub)
풀이 코드>
list1.extend(list2)
list1.extend(list3)
list1.sort()
list1
['a', 'a', 'b', 'c', 'e', 'f', 'f']
▶나는 새로운 list에 더하기 연산자를 이용해 이어붙였는데, extend 함수를 이용해서 붙일 수도 있다
[실습8] 실습7에서 만든 리스트에서 중복을 제거하여 출력하세요
new_list = []
for item in list_sub:
if item not in new_list:
new_list.append(item)
print(new_list)
풀이 코드>
set(list_sub)
['a', 'b', 'c', 'e', 'f']
▶ 간단하게 set()함수를 이용하면 중복 제거 가능
★ [실습9] 다음 s1 문자열에서 stop_words에 해당하는 단어를 뺀 단어 리스트를 만들어 출력하세요
출력 결과 예시
['삼성', '빅데이터', '데이터분석', '파이썬', '시각화', '판다스']
s1 = ' 새싹 빅데이터 데이터분석 데이터구조 파이썬 시각화 판다스 '
stop_words = '데이터구조'
내 코드>
s2 = s1.split()
filter_word = [word for word in s2 if word != stop_words]
print (filter_word)
풀이 코드>
s_strip = s1.strip()
words = s_strip.split('')
w_list = []
for w in words:
if w != stop_words: #if not w in stop_words:
w_list.append(w)
w_list
['새싹', '빅데이터', '데이터분석', '파이썬', '시각화', '판다스']
▶ 처음에 오류났는데, 같지 않다를 =!로 잘못 썼다. =!가 아니라 != 임을 기억하자
풀이에선 strip함수를 이용해서 앞뒤 공백을 제거했다.
strip으로 공백 제거 후, split 사용해서 리스트 만들어야 함
★ [실습10] 3개의 딕셔너리를 for문과 인덱싱을 활용하여 다음과 같은 리스트-딕셔너리 구조로 만들어 출력하세요
출력결과 예
[{'주문자': 'G밸리', '상품명': '노트북', '가격': 200}, {'주문자': 'G밸리', '상품명': '샴푸', '가격': 2}, {'주문자': '데이터분석', '상품명': '초코렛', '가격': 1}, {'주문자': '파이썬', '상품명': '자전거', '가격': 15}, {'주문자': '파이썬', '상품명': '셔츠', '가격': 1}, {'주문자': '파이썬', '상품명': '초코렛', '가격': 1}]
users = {'123':'G밸리',
'124':'파이썬',
'125':'데이터분석',}
products = {'a':['노트북', 200],
'b':['자전거', 15],
'c':['샴푸', 2],
'd':['셔츠', 1],
'e':['초코렛', 1]}
orders = [{'user_id':'123', 'products':['a','c']},
{'user_id':'125', 'products':['e']},
{'user_id':'124', 'products':['b','d','e']}]
내 코드>
new_orders = []
for order in orders:
user_name = users[order['user_id']]
for product_id in order['products']:
product_name, product_price = products[product_id]
new_orders.append({'주문자': user_name, '상품명': product_name, '가격': product_price})
print(new_orders)
풀이 코드>
delivery = []
for o in orders:
u_id = o['user_id'] #123
u_name = users[u_id] #G밸리
ps = o['products'] #['a', 'c']
for p in ps: #p는 상품ID, ps는 리스트
# p='a'
pname = products[p][0]
price = products[p][1]
d = {'주문자':u_name, '상품명':pname, '가격':price}
delivery.append(d)
print(delivery)
▶ 처음엔 pop을 이용해서 이름을 바꿔서 해보려고 했다..
처음 내가 짠 코드:
new_orders = []
for item in orders:
item['주문자']=item.pop('user_id')
item['상품명']=item.pop('products')
for문을 이용해서 데이터 접근해서 원하는 형식으로 만드는게 핵심이므로 반복문 연습하기!
'데이터 분석 > Python' 카테고리의 다른 글
[실습] numpy 배열 (1) | 2025.01.08 |
---|---|
[이론] 데이터 구조- numpy 배열 (0) | 2025.01.07 |
[이론] 데이터 구조- 튜플, 문자열, 해쉬셋, 딕셔너리 (1) | 2025.01.07 |
[이론] 데이터 구조- 리스트, 인덱싱, 슬라이싱 (2) | 2025.01.06 |
[이론] if 조건문, for반복문, 반복 제어 (2) | 2025.01.06 |