Python 한 줄 코딩 (11~15)

⑪ map() + zip()

print(list(map(sum,zip((1,2,3),(10,20,30)))))
정답 및 해설
[11,22,33]
zip() ↓ (1,10) (2,20) (3,30) ↓ sum() ↓ 11 22 33
sum()은 튜플의 합도 계산할 수 있다.

⑫ enumerate() + map()

print(list(enumerate(map(str,(10,20,30)),1)))
정답 및 해설
[(1,'10'),
 (2,'20'),
 (3,'30')]
map(str,...) ↓ '10' '20' '30' ↓ enumerate(...,1) ↓ 번호 추가
map() 결과도 enumerate()에 사용할 수 있다.

⑬ zip() + map()

print(list(zip(map(str,(1,2,3)),"ABC")))
정답 및 해설
[('1','A'),
 ('2','B'),
 ('3','C')]
map(str) ↓ '1' '2' '3' ↓ zip() ↓ 같은 위치끼리 묶는다.
zip() 안에는 iterator도 사용할 수 있다.

⑭ lambda + zip()

print(list(map(lambda x:x[0]*x[1],zip((1,2,3),(4,5,6)))))
정답 및 해설
[4,10,18]
zip() ↓ (1,4) (2,5) (3,6) ↓ 곱셈 ↓ 4 10 18
lambda에서 x[0] x[1] 접근은 매우 자주 사용된다.

⑮ enumerate() + zip() + lambda

print(list(map(lambda x:x[0]+x[1][0]+x[1][1],
enumerate(zip((1,2,3),(10,20,30))))))
정답 및 해설
[11,23,35]
enumerate() ↓ (0,(1,10)) (1,(2,20)) (2,(3,30)) ↓ 0+1+10=11 1+2+20=23 2+3+30=35
★★★★★ 정보교사 임용 코딩테스트 Python 시험에서 가장 많이 응용되는 형태이다.