Почему при добавлении перезаписывается список с добавляемым элементом? - PullRequest
0 голосов
/ 01 апреля 2012

Я пытался обновить два списка, используя этот код, где numpy был импортирован как np, а spkCount - массив numpy 8 x 10, содержащий 1.0 или 0.0:

mSpikes = []
stdSpikes = []
for line in spkCount:
    if line[10:-1].all() == 0:
        sample = line[0:9]
    else:
        sample = line

    m = np.mean(sample)
    std = np.std(sample)
    mSpikes.append(m)
    stdSpikes.append(std)

Когда я проверяю mSpikes и stdSpikes, я обнаруживаю, что они содержат следующие данные:

In [52]: stdSpikes
Out[52]: [3.2317865716108862]

In [53]: mSpikes
Out[53]: [53.333333333333336]

Кто-нибудь может объяснить, почему это происходит, и предложить курс действий? Спасибо.

РЕДАКТИРОВАТЬ: я должен упомянуть, что я проверил, правильно ли повторяется цикл for, и это так. Оператор if / else также обрабатывается, как и ожидалось. Проблема действительно связана с взаимодействием с list.append ...

Ответы [ 2 ]

5 голосов
/ 01 апреля 2012

.append() не переписывает список, в котором он работает. Кажется гораздо более вероятным, что ваш цикл просто выполняется только один раз или выполняется отдельно от остальной части вашего кода.

0 голосов
/ 01 апреля 2012

Я полагаю, что ваш вопрос касается mSpikes, имеющего только один элемент, хотя и формировал каждую итерацию. appand() действительно добавляется в список, оно не выходит за рамки предыдущего значения. Я бы посоветовал проверить spkCount - это должен быть диапазон, возможно, он содержит только один элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...