apply_all(func, arg_tuples) that calls func(*args) for every tuple in arg_tuples and returns the list of results — a hand-rolled itertools.starmap. Then demonstrate it works with a three-argument lambda.apply_all(lambda a, b, c: a + b * c, [(1, 2, 3), (0, 5, 2)])
[7, 10]
1+2×3=7 and 0+5×2=10 — each tuple is unpacked into three parameters.
func(*t) spreads the tuple into positional args.
A comprehension over arg_tuples finishes it.