일련의 단독 함수로 항목을 반복 할 수있는 항목으로 변환
-
18-09-2019 - |
문제
나는 종종 같은 길이의 시퀀스에 일련의 단제 함수를 적용해야한다는 것을 자주 본다. 나의 첫 번째 생각은 함께가는 것입니다 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)
제휴하지 않습니다 StackOverflow