python3: TypeError: объект «генератора» не является подписным - PullRequest
1 голос
/ 04 мая 2020

Я очень новичок в python. Я пытаюсь запустить простой код с 2D-списком. Но я получаю сообщение об ошибке: «TypeError: объект генератора не подписан». Может кто-нибудь, пожалуйста, помогите мне, как решить эту проблему? Или что не так с кодом.

import sys
import numpy as np
from scipy import stats

max_event = 1000000
a_bin = 10  # number each bin from 0-->10 where cumulant calculation will be done

# Define 2D array for [ bin, here 0->10][proton in each bin]
pArray = (() for nn in range(a_bin))
neve = (0 for mm in range(a_bin))

for ii in range(0, max_event):

    _a = np.random.randint(10)
    _b = np.random.randint(120)

    if ii % 1000 == 0:
        print(ii, _a, _b)

    for j in range(0, 10):
        if _a == j:
            pArray[j].append(_b)
            neve[j] += 1


print("filling done!")

for k in range(0, a_bin):

    mu2 = stats.mstats.moment(pArray[k], moment=2)
    mu4 = stats.mstats.moment(pArray[k], moment=4)

    print('serial = %d, mu_2 = %f , mu_4 = %f, event = %d' %
          (k, mu2, mu4, neve[k]))
    # print k, neve[k], c1[k], c2[k], c3[k], c4[k], c5[k], c6[k]

print("calculation done!")

Вот вывод, который я получаю:

0 9 18 Traceback (последний последний вызов): Файл "calcumuBin.py ", строка 23, в pArray [j] .append (_b) TypeError: объект-генератор не может быть подписан

1 Ответ

1 голос
/ 04 мая 2020

Вы можете изменить pArray на список списков, который не позволит вам получить TypeError: 'generator' object is not subscriptable

pArray = [[] for nn in range(a_bin)]
neve = [0 for mm in range(a_bin)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...