Вы можете попробовать это.
[i+(j,) for i,j in zip(index,size)]
# [(1, 4, 2), (3, 6, 2), (7, 10, 4), (3, 9, 4)]
Анализ времени:
# When list size is 4
In [142]: timeit [(*i,j) for i,j in zip(index, size)] #yatu's answer
1.24 µs ± 72.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
In [144]: timeit [i+(j,) for i,j in zip(index,size)] #Ch3steR's answer
902 ns ± 28.4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
Когда список кортежей размером более 10000.
In [149]: timeit [(*i,j) for i,j in zip(index, size)]
1.68 ms ± 77.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [150]: timeit [i+(j,) for i,j in zip(index,size)]
1.18 ms ± 27.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Немного быстрее, чем распаковывать подход