2017-09-19 67 views
0

我试图在这个列表中求和每对值。这里有一个简短的例子,但我希望我的函数能够处理任何长度的列表。Python3在列表中添加/迭代

所以,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 

我不知道如果我的问题是清楚的,我会澄清是否有任何问题。

回答

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开始计数直到数组的末尾。然后你总结我和j,通过这样做,你最终将所有组合总结在一起。它是len(x)-1,因为我停在倒数第二个结果(并且索引从0开始,所以len(x)比最后一个索引的值多1,但范围不包括结尾值), j停在最后一个索引(len(x)-1)。

0

尝试组合:

from itertools import combinations 

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

Combinations

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