2016-04-05 40 views
1

我正在尝试编写每个元素与列表中的所有其他元素之间但不与其自身之间的操作的代码。以下是代码。在Python列表中的位置

list = [10,20,30,30,40,50,50,50,60,70]; 
for i in list: 
     sum=i; 
     for j in list: 
       if list.index(i) != list.index(j): 
         s=(50-((j-i)/2))*0.13; 
         sum+=s; 
     print("score of %d is %f"%(i,sum)); 

但仍然代码无法正常工作。它不符合职位的if条件。

+1

请添加预期的输出,因为问题对我没有任何意义... –

+0

重复30。所以,如果重复,所有重复项目将被排除。这是预期的吗? –

+0

重复不应排除....我和j不应该属于相同的位置....例如:30位置3应该与30位置4运行,但不是与30位置3 –

回答

1

您可以使用enumerate获取索引。这可能会做你最多的:

lis = [10, 20, 30, 30, 40, 50, 50, 50, 60, 70] 

for idx1, el1 in enumerate(lis): 
    sum_ = el1 
    for idx2, el2 in enumerate(lis): 
     if idx1 != idx2: 
      sum_ += (50 - (el2 - el1)/2) * 0.13 
     print("score of %d is %f"%(idx1, sum_)) 
+0

我认为'print()'缩进了太多。它应该与'for idx2,el2 ...'一致*' – RootTwo

+0

'print()'仅用于调试并显示正在发生的事情。例如,您可以看到,如果两个索引相等,即每个内部循环一次,总和不会改变。 –

+0

它正在工作......谢谢:) –