Почему это для заявления, добавляющего дважды?питон - PullRequest
0 голосов
/ 12 декабря 2011
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 ито есть, добавить позиции, в которых произошла конкретная последовательность (элемент в results_alpha) в исходной последовательности (values_alpha).Если нет, просто пропустите его, отсюда и выражение pass.

1 Ответ

2 голосов
/ 12 декабря 2011

Как сказал 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']
...