Python map() , zip()
Python 의 map() 과 zip()
- map( ) : https://docs.python.org/ko/3.7/library/functions.html#mapmap
(function, iterable, ...)
iterable 의 모든 항목에 function 을 적용한 후 그 결과를 돌려주는 이터레이터를 돌려줍니다. 추가 iterable 인자가 전달되면, function 은 그 수 만큼의 인자를 받아들여야 하고 모든 이터러블에서 병렬로 제공되는 항목들에 적용됩니다. 다중 이터러블의 경우, 이터레이터는 가장 짧은 이터러블이 모두 소모되면 멈춥니다. 함수 입력이 이미 인자 튜플로 배치된 경우에는,
itertools.starmap()
를 보세요.- zip() : https://docs.python.org/ko/3.7/library/functions.html#zip
zip
(*iterables)
각 iterables 의 요소들을 모으는 이터레이터를 만듭니다.
튜플의 이터레이터를 돌려주는데, i 번째 튜플은 각 인자로 전달된 시퀀스나 이터러블의 i 번째 요소를 포함합니다. 이터레이터는 가장 짧은 입력 이터러블이 모두 소모되면 멈춥니다. 하나의 이터러블 인자를 사용하면, 1-튜플의 이터레이터를 돌려줍니다. 인자가 없으면, 빈 이터레이터를 돌려줍니다.
['1','2','3']
1,2,3 이라는 숫자가 각각 str함수를 거쳐서 문자열 1,2,3 으로 바뀐다.
만약 x2 라는 함수를 아래와 같이 정의하면
def x2(x):
return x*2
map(x2, [1,2,3]) 의 결과는
[2,4,6]
map의 인자가 iterable 하기만 하면 됨.
zip은 ['a','b','c'] 와 [1,2,3] 이라는 2개의 list가 있으면 각 인덱스 끼리 합쳐준다.
zip(['a','b','c'], [1,2,3]) 의 결과는
[('a',1),('b',2),('c',3)] 이다. (하지만, 3.5 버전에서 해보니 zip 오브젝트로만 나온다. 좀 더 확인 필요함)
dict(zip(['a','b','c'], [1,2,3])) 의 결과는
'a':1 , 'b':2, 'c':3 이다.
map object, zip object 로 나오는 것들은 iterator를 반환하니 내용을 확인할려면 for문을 써서 확인해보면 가능.
댓글
댓글 쓰기