연습문제 풀이.
1. 아래 코드의 실행 결과는?
a = [[1,2,3,5], [1,2,3,4]]
b = [[40,40], [30,30], [20,20], [10,10]]
print([[sum([t[0]*t[1] for t in zip(i,j)]) for j in zip(*b)] for i in a])
- 답 및 해설
# 입력
a = [[1,2,3,5], [1,2,3,4]]
b = [[40,40], [30,30], [20,20], [10,10]]
print([[sum([t[0]*t[1] for t in zip(i,j)]) for j in zip(*b)] for i in a])
# 출력
[[210, 210], [200, 200]]
=> zip() 함수는 같은 인덱스의 원소끼리 튜플로 묶는다. *(asterisk)는 시퀀스 자료형 데이터가 할당된 변수에 붙일 경우 해당 데이터를 언패킹한다.
ex) b=[1,2,3,4]. print(b) : [1,2,3,4]. print(*b) : 1, 2, 3, 4
i : [1,2,3,5] // [1,2,3,4]
*b : [40,40], [30,30], [20,20], [10,10], zip(*b) : (40,30,20,10), (40,30,20,10)
j : (40,30,20,10) // (40,30,20,10)
t : (1,40), (2,30), (3,20), (5,10), (1,40), (2,30), (3,20), (5,10) // (1,40), (2,30), (3,20), (4,10), (1,40), (2,30), (3,20), (4,10)
2. 아래 코드의 실행 결과는?
a=[1,2,3]
b=[4,5,6]
c=[7,8,9]
print([[sum(k),len(k)] for k in zip(a,b,c)])
- 답 및 해설
# 입력
a=[1,2,3]
b=[4,5,6]
c=[7,8,9]
print([[sum(k),len(k)] for k in zip(a,b,c)])
# 출력
[[12, 3], [15, 3], [18, 3]]
=> k : (1,4,7), (2,5,8), (3,6,9)
3. 아래 코드의 빈칸에 들어갈 알맞은 코드는?
# 입력
int_list=[1,2,3,5,10]
result = [빈칸 for i in int_list]
print(result)
# 출력
[0,0,1,1,3]
ⓛ i ② i+2 ③ i//3 ④ i*3 ⑤ i/3
- 답 및 해설
③ i//3
=> list comprehension 구문이다. list 안에는 i를 3으로 나눈 몫을 넣을 거고, i는 for문으로부터 가져오는 1, 2, 3, 5, 10이 된다.
5. 아래 코드의 실행 결과는?
date_info = {'year':'2019', 'month':'9', 'day':'6'}
result = '{year}-{month}-{day}'.format(**date_info)
print(result)
- 답 및 해설
# 입력
date_info = {'year':'2023', 'month':'8', 'day':'23'}
result = '{year}-{month}-{day}'.format(**date_info)
print(result)
# 출력
2023-8-23
=> *를 2개 사용하면 딕셔너리형을 패킹, 언패킹하게 된다. date_info라는 변수에 할당된 데이터는 key value 쌍이 3개인 dict형 데이터이므로, date_info에 **를 2개 붙여 출력하면 각각의 key value 쌍이 언패킹된다.
'STUDY > Python' 카테고리의 다른 글
[Pandas] describe() (0) | 2024.01.16 |
---|---|
[Pandas] idxmax(), idxmin() (2) | 2024.01.01 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 8. 파이썬 스타일 코드(1) (0) | 2023.08.22 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 7. 자료구조 (3) | 2023.08.21 |
[데이터 과학을 위한 파이썬 프로그래밍_2판] 5. 함수 (0) | 2023.08.18 |