python3:TypeError:'generator'对象不可下标

问题描述 投票:0回答:1

我对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追溯(最近一次通话最后一次):文件“ calcumuBin.py”,行23在pArray [j] .append(_b)TypeError:“生成器”对象不可下标

python python-3.x list python-2.7
1个回答
0
投票

您可以将pArray更改为列表列表,这将阻止您获取TypeError: 'generator' object is not subscriptable

pArray = [[] for nn in range(a_bin)]
neve = [0 for mm in range(a_bin)]
© www.soinside.com 2019 - 2024. All rights reserved.