처리 어떻게 예를 들어 100 인수를 제공하는 경우 때문에 : 여기 은 시도 할 수있다
def mapper(func, *sequences):
result = []
if len(sequences) > 0:
minl = min(len(subseq) for subseq in sequences)
for i in range(minl):
result.append(func(*[subseq[i] for subseq in sequences]))
return result
이 생성됩니다
>>> import operator
>>> mapper(operator.add, [1,2,4], [3,6,9])
[4, 8, 13]
,
별표를 사용하여 반복 호출을 함수 호출에서 별도의 매개 변수로 압축 해제합니다. 이 때문에, 아직 완전히 일치하지 않는 것을
참고 :
sequences
이 반복 가능 객체하지 자체를 나열해야한다, 그래서 우리가 할 수 항상 인덱스;
- python-3.x의
map
의 결과는 반복 가능이므로 목록이 아닙니다. 대부분의 파이썬 인터프리터 파이썬 코드보다 인터프리터 map
가깝게 구현하는 것 def mapper(func, *sequences):
if not sequences:
raise TypeError('Mapper should have at least two parameters')
iters = [iter(seq) for seq in sequences]
while True:
yield func(*[next(it) for it in iters])
참고하지만, 그래서 내장을 사용하는 것이 확실히 더 효율적입니다 :
더 python-3.x -like map
기능이 될 것이다 map
, 직접 작성하는 것보다
N.B. : list
, set
, dict
등과 같은 변수 이름을 사용하지 않는 것이 좋습니다. list
유형에 대한 참조가 여기에서 (로컬에서는) 무시됩니다. 결과적으로 list(some_iterable)
과 같은 전화는 더 이상 작동하지 않습니다.
N.B :'list'와 같은 변수 이름은'list' 유형에 대한 참조를 무시하므로 사용하지 마십시오. –