我在python中有一个表(列表列表),如:(Python 3)
packets = [[a, b, (0+a), (0+b)], [e, f, (0+a+e), (0+b+f)], [i, j, (0+a+e+i), (0+b+f+j)]]
第一列是数据包的大小,第二列是时间差。 我想计算第三列中的总大小和第四列中的时间总和。
我的代码是:
for c in range (1, len(packets)):
packets[c][2] = packets[c-1][2] + packets[c][0]
packets[c][3] = packets[c-1][3] + packets[c][1]
但我得memoryerror
因packets
的大小接近一百万。
请建议我解决内存问题的方法。
答案 0 :(得分:0)
尝试使用xrange函数而不是range:
for c in xrange(1,len(packets)):
packets[c][2]=packets[c-1][2]+packets[c][0]
packets[c][3]=packets[c-1][3]+packets[c][1]
https://docs.python.org/2/library/functions.html#xrange
修改强>
如果您无法使用xrange
,请自行创建:
def myrange(start, end):
while True:
if start == end:
break
yield start
start += 1
for i in myrange(1, 10):
print i