2014-12-22 5 views
0
>>>uneven = [['a','b','c'],['d','e'],['g','h','i']] 
>>>map(None,*uneven) 

O/P : [(a ','d ','g '), ('b ','e ','h '), ('c ', 없음,'i '다음지도 기능은 어떻게 작동합니까?

위 코드는 행렬의 전치를 찾는 데 사용할 수 있습니다. 그러나 나는 그것이 어떻게 작동하는지 이해할 수 없다.

+0

'map'이 무엇을하는지 이해합니까? '* '는 무엇을 의미합니까? – Maroun

+0

예, 이해합니다. "없음"은 나를 조금 혼란스럽게 만들었습니다. 지금은 이해. – purudpd

답변

3

* 연산자를 사용하면 목록이지도의 위치 인수로 분리됩니다. 당신이 map에 여러 반복 가능 객체를 전달하는 경우

>>> map(None, ['a','b','c'], ['d','e'], ['g','h','i'])

, 그때 (이 경우 None에서) 함수가 병렬로 모든 반복자에 적용 : 이것은 당신이 실제로 실행하고있는 것입니다. 먼저 'a', 'd', 'g'을 처리하는 식으로 진행합니다.

편집 : 으로 당신이 map 함수로 None에서 통과 할 때, 그것은 식별 기능, 즉 lambda id: id 수 맡았다 특별 도착, 아래 존에 의해 지적했다. 하나 개 이상의 시퀀스가 ​​주어지면 map에서 None의 사용이 특별한 케이스가 map

의 문서에서 파이썬 3

+1

이 답변에서 누락 된 핵심 포인트 중 하나는 'lambda id : id'라고 명시된 호출 가능 객체로'None'이 특수하게 사용된다는 것입니다. 이제는 Python 3.x에서 금지되었습니다. –

+1

및 기타 참고 - "더 낫게 쓰여집니다" 'list (izip_longest (* uneven))'(2to3/다른 툴은'zip_longest'로 바뀌기 때문에 어쨌든 필요합니다) –

1
map(function, sequence[, sequence, ...]) -> list 

에서 제거되었습니다의 함수는 인수 목록 불려 각 시퀀스의 해당 항목으로 구성되고 모든 시퀀스의 길이가 동일한 경우 누락 값 대신 없음을 사용하십시오. 함수가 포함되지 않은 경우

, 그것이 시퀀스에서 항목의 위치에 따라 운전자 *zip으로 시퀀스를 사용하여 시퀀스

의 아이템의 목록을 반환한다.

관련 문제