我对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:“生成器”对象不可下标
您可以将pArray更改为列表列表,这将阻止您获取TypeError: 'generator' object is not subscriptable
pArray = [[] for nn in range(a_bin)]
neve = [0 for mm in range(a_bin)]