Есть ли идиоматический и/или элегантный Python для zipping и применения списка функций над списком значений?
Например, предположим, что у вас есть список функций:
functions = [int, unicode, float, lambda x: '~' + x + '~']
и список значений:
values = ['33', '\xc3\xa4', '3.14', 'flange']
Есть ли способ применить i-я функцию к i-му значению и вернуть список той же длины преобразованных значений, избегая при этом уродливого понимания списка?
[functions[i](values[i]) for i in range(len(functions))] # <- ugly
Я хочу что-то вроде zip()
+ map()
(zipmap()
!) списка функций со списком значений и применять функции к их парным значениям. Я думал, что itertools
может предложить что-то актуальное, но такие функции, как imap
и starmap
, предназначены для сопоставления одной функции над итерируемым, а не итерируемым функциями над другим итерабельным.