Я не вижу здесь никаких проблем с использованием индексов:
sum([x[0] * x[1] for x in combinations(args, 2)])
Если вы действительно хотите их избежать, вы можете сделать:
sum([x*y for x,y in combinations(args, 2)])
Но, если честноЯ бы предпочел вашу закомментированную версию.Это ясно, читаемо и более явно.И вы на самом деле не получите много, написав это, как описано выше, только для трех переменных.
Есть ли функция, которую я могу использовать, которая действует как sum (), но только для умножения?
Встроенный?Нет. Но вы можете получить эту функциональность довольно просто с помощью следующего:
In : a=[1,2,3,4,5,6]
In : from operator import mul
In : reduce(mul,a)
Out: 720