Python3在列表上添加/迭代

时间:2017-09-19 14:18:39

标签: python-3.x list

我试图在这个列表中对每对值求和。这是一个简短的例子,但我希望我的功能可以用于任何长度列表。

所以,对于x = [1,2,3],我希望返回12的值。我想浓缩一下:

y = 0
for i in x:
    y += x[0] + x[1] 
    y += x[1] + x[2]
    y += x[0] + x[2]
return y

我不确定我的问题是否清楚,并且我会澄清是否有任何问题。

3 个答案:

答案 0 :(得分:2)

for i in range(0, len(x)-1): 
        for j in range(i+1, len(x)):
            sum+=x[i]+x[j]

希望我写的是正确的,自从我接触Python以来,它已经有点过了。但实际上,你有标记1和标记2 - 标记1从0开始,每次外循环递增时计数,j从i + 1开始计数到数组末尾。然后你总结i和j,通过这样做,你最终将所有组合加在一起。它的len(x)-1因为我在倒数第二个结果处停止(并且索引从0开始,所以len(x)比最后一个索引的值多1,但是范围不是包括结束值),j在最后一个索引处停止(len(x)-1)。

答案 1 :(得分:0)

尝试组合:

from itertools import combinations

x = [1,2,3]
y = 0
for p in combinations(x, 2):
    y += sum(p)

Combinations

答案 2 :(得分:0)

import itertools
y = sum( sum(combo) for combo in itertools.combinations( x, 2 ) )