Python迭代多个元素

Python迭代多个元素,python,list,iteration,Python,List,Iteration,我有一个嵌套的整数列表: dimensions = [[3, 12, 42], [19, 16, 10], ..., [2, 13, 20]] 我需要通过对每个子列表执行此操作来展平列表: [a, b, c] ==> 2 * (ab + bc + ac) 我设法以一种非常明确的方式完成了这项工作,我想知道是否有一种更优雅的/pythonic的解决方案作为列表理解中的一行程序 [2* (e[0]*e[1] + e[1]*e[2] + e[0]*e[2]) for e in dimensi

我有一个嵌套的整数列表:

dimensions = [[3, 12, 42], [19, 16, 10], ..., [2, 13, 20]]
我需要通过对每个子列表执行此操作来展平列表:

[a, b, c] ==> 2 * (ab + bc + ac)

我设法以一种非常明确的方式完成了这项工作,我想知道是否有一种更优雅的/pythonic的解决方案作为列表理解中的一行程序

[2* (e[0]*e[1] + e[1]*e[2] + e[0]*e[2]) for e in dimensions]

当然你不需要比这更复杂的东西

[2 * (a*b + b*c + a*c) for a,b,c in dimensions]

您可以使用
itertools.compositions
生成项目的配对:

from itertools import combinations
[sum(a * b for a, b in combinations(l, 2)) * 2 for l in dimensions]
因此,鉴于:

dimensions = [[3, 12, 42], [19, 16, 10], [2, 13, 20]]
这将返回:

[1332, 1308, 652]
您可以尝试以下方法:

result = []
for sublist in dimensions:
        for a,b c in sublist:
             value = 2*(a*b+b*c+a*c)
             result.append(value)
print(result)

为了进行比较,最好展示您的原始解决方案。