알쏭달쏭 공부한거 쓰기
7/5일 복습-7/7일 진행 본문
1)딕셔너리
-딕셔너리로 저장된 자료에서 key값으로 호출할기
-길이len
-이름 출력 vs for i in 이름: 의 차이점> 메뉴판 만들 수 있다.
-딕셔너리 삭제 del 딕셔너리명[key]
-딕셔너리 추가 딕셔너리명 [key]=value >딕셔너리 마지막으로 들어간다.
-딕셔너리[key]vs딕셔너리.get[key]의 차이점> 없는 키에 대해 반환 값이 다르다
-딕셔너리.keys() .values()
2)딕셔너리 zip test
name=['둘리','뽀로로','흰둥이']
scores=[100,57,43]
print(zip(name,scores))
#<zip object at 0x0000027C8D820E80>
#아마 zip이 보여주는게 주소인듯
print(dict(zip(name,scores)))
{'둘리': 100, '뽀로로': 57, '흰둥이': 43}
print(list(zip(name,scores)))
[('둘리', 100), ('뽀로로', 57), ('흰둥이', 43)]
n=zip(name,scores)
for i in n:
print(i)
'''
('둘리', 100)
('뽀로로', 57)
('흰둥이', 43)
'''
name=['둘리','뽀로로','흰둥이']
scores=[100,57,43]
print(zip(name, scores))
print(dict(zip(name,scores)))
print(list(zip(name,scores)))
n=zip(name,scores)
for i in n:
print(i)
print(n)
print(list(zip(*n)))
print(zip(*n))
'''
<zip object at 0x00000294A1ED0E80>
{'둘리': 100, '뽀로로': 57, '흰둥이': 43}
[('둘리', 100), ('뽀로로', 57), ('흰둥이', 43)]
('둘리', 100)
('뽀로로', 57)
('흰둥이', 43)
<zip object at 0x00000294A1ED1500>
[]
<zip object at 0x00000294A1ED1480>
'''
얘는 안되는데
얘는 된다.
name=['둘리','뽀로로','흰둥이']
scores=[100,57,43]
print(zip(name, scores))
print(dict(zip(name,scores)))
print(list(zip(name,scores)))
n=zip(name,scores)
print(n)
for i in n:
print(i)
n=zip(name,scores)
print(list(zip(*n)))
print(zip(*n))
'''
name=['둘리','뽀로로','흰둥이']
scores=[100,57,43]
print(zip(name, scores))
print(dict(zip(name,scores)))
print(list(zip(name,scores)))
n=zip(name,scores)
print(n)
for i in n:
print(i)
n=zip(name,scores)
print(list(zip(*n)))
print(zip(*n))
'''
name=['둘리','뽀로로','흰둥이']
scores=[100,57,43]
print(zip(name, scores))
print(dict(zip(name,scores)))
print(list(zip(name,scores)))
n=zip(name,scores)
print(n)
for i in n:
print(i)
n=zip(name,scores)
print(list(zip(*n)))
#요소 리스트로 될돌려 돌려받는 방법
n=zip(name,scores)
m,s=zip(*n)#애는 튜플을 리스트로 묶어서 반환하고 각각으로 튜플을 반환함
print(m,s)
n=zip(name,scores)
names2,scores2=[list(i) for i in zip(*n)] #튜플을 리스트로 캐스팅한다.
print(names2,scores2)
print(zip(*n))
'''
<zip object at 0x0000024ED1240A40>
{'둘리': 100, '뽀로로': 57, '흰둥이': 43}
[('둘리', 100), ('뽀로로', 57), ('흰둥이', 43)]
<zip object at 0x0000024ED1241900>
('둘리', 100)
('뽀로로', 57)
('흰둥이', 43)
[('둘리', '뽀로로', '흰둥이'), (100, 57, 43)]
('둘리', '뽀로로', '흰둥이') (100, 57, 43)
['둘리', '뽀로로', '흰둥이'] [100, 57, 43]
<zip object at 0x0000024ED1241AC0>
'''
Q: 근데
n=zip(name,scores)
m,s=zip(*n)#애는 튜플을 리스트로 묶어서 반환하고 각각으로 튜플을 반환함
print(m,s)
names2,scores2=[list(i) for i in zip(*n)]
n을 이미 이용해서 이런 경우에는 names2, scores2가 받는 값이 없다.
why?
교수님 말씀> zip은 쓰고나면 없앤다.
https://jaehaaheaj.tistory.com/entry/python-014
8번의 내용을 보면 zip에서 아이템을 이미 이용했다.
그렇다면 어떻게 zip오브젝트의 내용물을 이용하는 방법은 list화한 zip을 변수에 저장하는 것이다.
이 경우에는 재사용이 가능한다.
## 6.20 학생의 이름과 국어, 수학, 과학 성적이 하나의 튜플을 이룬다. 이렇게 튜플로 표시된 학생의 성적을 원소로 하는 튜플 scores가 아래와 같이 있다.
---
```
scores = ( ('박동규', 88, 95, 90), ('강영민', 85, 90, 95), ('박동민', 70, 90, 80), ('홍승주', 90, 90, 95))
```
### 1) 이러한 튜플을 zip() 함수를 사용하여 언패킹하여 수학 성적만 추출한 뒤에 수학 성적의 평균을 구하는 코드를 작성하라.
실행 결과
```
학생들의 수학 성적의 평균은 91.25입니다.
```
### 2) 이러한 튜플을 언패킹하여 수학, 과학 성적만 추출한 뒤에 수학과 과학 성적의 평균을 구하는 코드를 작성하라.
---
실행 결과
```
학생들의 수학과 과학 성적의 평균은 90.625입니다.
```
### 3) 이러한 튜플에 대하여 학생의 이름과 국어, 수학, 과학 성적의 평균 점수를 student_dic이라는 딕셔너리 구조에 넣은 후 다음과 같이 이름과 평균성적을 출력하여라.
---
실행 결과
```
이름 평균성적
---------------------
박동규 91.00
강영민 90.00
박동민 80.00
홍승주 91.67
```
def a():
scores = ( ('박동규', 88, 95, 90), ('강영민', 85, 90, 95), ('박동민', 70, 90, 80), ('홍승주', 90, 90, 95))
name,korea,math,science=zip(*scores)#zip안의 요소들이 각 변수에 담김
print(name, korea, math, science)
print(type(math))
print(f'학생들의 수학 성적의 평균은 {sum(math)/len(math):.2f}입니다.')
print(f'학생들의 수학과 과학 성적의 평균은 {(sum(math)+sum(science))/(len(math)+len(science)):.3f}입니다.')
dic={}
for i in scores:
dic[i[0]]=sum(i[1:])/len(i[1:])
print(dic)
print(f'이름 평균성적\n ------------------')
for i in dic:
print(f'{i}\t {dic[i]:.2f}')
a()
'파이썬 -23여름학기(ㄱㅎㅈ)' 카테고리의 다른 글
2023 여름 파이썬 중간 족보 (0) | 2023.07.09 |
---|---|
7/7 파이썬 수업-클래스 복습, Gui, time (0) | 2023.07.07 |
23 파이썬 기말 족보 (0) | 2023.07.06 |
22 파이썬 기말 족보 (0) | 2023.07.06 |
7/6 수업 내용 (0) | 2023.07.06 |