这是为什么这个语句追加两次? Python

这是为什么这个语句追加两次? Python

问题描述:

alpha_sum = [2396, 780, 2022, 596] 
alpha_b_sum = [2206, 828, 1962, 597] 
results_alpha = [[145, 142, 142, 111, 121, 151, 111, 113, 121, 106, 67, 151, 57, 111, 106, 101, 111, 98, 142, 106, 83], [142, 106, 83, 69, 145, 121, 114], [69, 145, 121, 114, 57, 121, 111, 121, 151, 77, 121, 77, 101, 113, 142, 77, 113, 108, 83], [113, 108, 83, 77, 114, 101], [57, 106, 98, 101, 101, 108, 108, 77, 114, 106, 142, 57, 113, 67], [101, 121, 77, 121, 57, 142, 142, 114, 121]] 
values_alpha= [145, 142, 142, 111, 121, 151, 111, 113, 121, 106, 67, 151, 57, 111, 106, 101, 111, 98, 142, 106, 83, 69, 145, 121, 114, 57, 121, 111, 121, 151, 77, 121, 77, 101, 113, 142, 77, 113, 108, 83, 77, 114, 101, 69, 151, 67, 57, 106, 98, 101, 101, 108, 108, 77, 114, 106, 142, 57, 113, 67, 77, 101, 121, 77, 121, 57, 142, 142, 114, 121] 

for alpha, alpha_b in zip(alpha_sum, alpha_b_sum): 
    for i in range(len(values_alpha)): 
     if alpha > alpha_b: 
      for element in results_alpha: 
       length = len(element) 
       if values_alpha[i:i+length] == element: 
        export.append('Alpha'+'\t'+'[%d, %d]' % (i, i+length-1)+'\n') 
        #print '[%d,%d]' % (i, i+length-1)+'\n' 
       else: 
        pass 

print export 
['Alpha\t[0, 20]\n', 'Alpha\t[18, 24]\n', 'Alpha\t[21, 39]\n', 'Alpha\t[37, 42]\n', 'Alpha\t[46, 59]\n', 'Alpha\t[61, 69]\n', 
'Alpha\t[0, 20]\n', 'Alpha\t[18, 24]\n', 'Alpha\t[21, 39]\n', 'Alpha\t[37, 42]\n', 'Alpha\t[46, 59]\n', 'Alpha\t[61, 69]\n'] 

为什么它追加两次数据?这是为什么这个语句追加两次? Python

这里发生了什么是一个数字清单→values_alpha?在该列表中有哪些是附加到→results_alpha所以results_alphavalues_alpha部分特定部分...

我想检查是否在alpha_sum > alpha_b_sum,如果是,添加特定的顺序出现的位置中的每个元素(元素在results_alpha)内的原始序列(values_alpha)。如果没有,那就跳过它,因此pass声明。

+1

值'alpha'和'只相比,但所描述的从未使用过alpha_b'是。 –

+0

您是否尝试过使用调试器逐步调试代码以查看“export”是如何按顺序构建的? – silvado

+0

我明白你的意思了。 alpha_sum是results_alpha中每个元素的总和。我将它添加在那里 –

就像Noah1989说的那样,这些值是迭代过来的,但从来没有用过。 因为来自alpha的两个值碰巧大于它们在alpha_b中的相应匹配,所以循环发生两次。

试试这个

>>> for i in range(len(values_alpha)): 
...  for element in results_alpha: 
...   length = len(element) 
...   if values_alpha[i:i+length] == element: 
...    export.append('Alpha'+'\t'+'[%d, %d]' % (i, i+length-1)+'\n') 
...    #print '[%d,%d]' % (i, i+length-1)+'\n' 
...   else: 
...    pass 
... 
>>> print export 
['Alpha\t[0, 20]\n', 'Alpha\t[18, 24]\n', 'Alpha\t[21, 39]\n', 'Alpha\t[37, 42]\n', 'Alpha\t[46, 59]\n', 'Alpha\t[61, 69]\n'] 
+0

我只想添加sum_alpha> sum_alpha_b的值。这是我最初的功能 –