试试Python内置的sum()函数:
[sum(foo(i,j)) for i in x for j in y]
样本运行:
def foo(m,n):
print(f'called: foo({m},{n})')
return m,n
x = [1,2]
y = [3,4]
print('Run without sum() - expect 8 calls')
[foo(i,j)[0] + foo(i,j)[1] for i in x for j in y]
print('\nRun with sum() - expect 4 calls')
[sum(foo(i,j)) for i in x for j in y]
> Run without sum() - expect 8 calls
> called: foo(1,3)
> called: foo(1,3)
> called: foo(1,4)
> called: foo(1,4)
> called: foo(2,3)
> called: foo(2,3)
> called: foo(2,4)
> called: foo(2,4)
> [4, 5, 5, 6]
>
> Run with sum() - expect 4 calls
> called: foo(1,3)
> called: foo(1,4)
> called: foo(2,3)
> called: foo(2,4)
> [4, 5, 5, 6]