为什么这个for语句会追加两次?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']
为什么数据会被添加两次呢?
这里发生的事情是有一个数字列表,叫做 values_alpha。在这个列表中,有一些部分被添加到了 results_alpha,所以 results_alpha 包含了 values_alpha 的一些内容……
我想检查每个元素是否满足 alpha_sum > alpha_b_sum,如果满足,就记录下这个特定序列在原始序列(values_alpha)中的位置(也就是在 results_alpha 中的元素)。如果不满足,就跳过这个元素,所以用到了 pass 这个语句。
相关问题:
1 个回答
2
就像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']