문제

나는 종종 같은 길이의 시퀀스에 일련의 단제 함수를 적용해야한다는 것을 자주 본다. 나의 첫 번째 생각은 함께가는 것입니다 map(), 그러나 이것은 순서대로 모든 항목에 적용 되려면 단일 함수 만 필요합니다.

예를 들어 다음 코드에서는 신청하고 싶습니다. str.upper() 첫 번째 항목에 int 각각의 두 번째 항목에 a. "transform"내가 후에 효과를위한 장소 보유자입니다.

COLS = tuple([transform((str.upper, int), a.split(",")) for a in "pid,5 user,8 program,28 dev,10 sent,9 received,15".split()])

표준 라이브러리 또는 이와 같은 깔끔하게 변형을 수행 할 수있는 다른 멋진 구현이 있습니까?

도움이 되었습니까?

해결책

는 어때...:

def transform(functions, arguments):
  return [f(a) for f, a in zip(functions, arguments)]

다른 팁

>>> s="pid,5 user,8 program,28 dev,10 sent,9 received,15".split()
>>> [ ( m.upper(),int(n)) for m, n in [i.split(",") for i in s ] ]
[('PID', 5), ('USER', 8), ('PROGRAM', 28), ('DEV', 10), ('SENT', 9), ('RECEIVED', 15)]

나는 현재 이것을 사용하고있다 :

def transform(unaries, iterable):
    return map(lambda a, b: a(b), unaries, iterable)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top