Python 한 줄 코딩 종합 (16~20)

⑯ *args + zip() + map()

print((lambda *a:list(zip(a,map(lambda x:x*2,a))))(1,2,3))
정답 및 해설
[(1,2),
 (2,4),
 (3,6)]
① *args ↓ (1,2,3) ② map() ↓ 2 4 6 ③ zip() ↓ (1,2) (2,4) (3,6)
zip()과 map()을 함께 사용하는 대표 패턴이다.

⑰ **kwargs + items() + enumerate()

print((lambda **k:list(enumerate(k.items(),1)))(A=10,B=20))
정답 및 해설
[(1,('A',10)),
 (2,('B',20))]
items() ↓ ('A',10) ('B',20) ↓ enumerate(...,1) ↓ 번호 추가
(번호,(key,value)) 형태를 반드시 기억하자.

⑱ enumerate() + zip() + lambda

print(list(map(lambda x:x[0]+sum(x[1]),
enumerate(zip((1,2),(10,20))))))
정답 및 해설
[11,23]
enumerate() ↓ (0,(1,10)) (1,(2,20)) ↓ sum((1,10)) ↓ 11 ↓ 0+11=11 1+22=23
sum()은 튜플에도 사용할 수 있다.

⑲ *args + enumerate()

print((lambda *a:dict(enumerate(a,1)))(5,6,7))
정답 및 해설
{1:5,
2:6,
3:7}
enumerate(...,1) ↓ (1,5) (2,6) (3,7) ↓ dict()
dict(enumerate()) 형태는 번호 매기기에 매우 유용하다.

⑳ **kwargs + items() + map()

print((lambda **k:list(map(lambda x:x[0],k.items())))(A=1,B=2,C=3))
정답 및 해설
['A',
 'B',
 'C']
items() ↓ ('A',1) ↓ x[0] ↓ 'A' 동일하게 B C 추출
key만 추출하는 다른 방법은
list(k.keys())
이다.