这段代码正在列出一个列表列表(从csv文件创建)并尝试组织它。我知道它看起来很乱,我已经在学校编写了几个月。
无论如何,代码会比较[c]
索引的第一个索引的前7个字符(因为我必须遍历此列表中的所有2500多个列表)。如果它们是相同的,我会用这些变量做一些数学计算。
除了最后的数据分组外,所有这些都有效。我得到"索引超出范围"由于[c+1]
while c <len(dataList)
时的while c+1 < len(dataList):
if dataList[c][0][0:7] == dataList[c+1][0][0:7]:
totalVolume += float(dataList[c][5])
volClose += (float(dataList[c][5]) * float(dataList[c][4]))
c +=1
else:
volClose += (float(dataList[c][5]) * float(dataList[c][4]))
totalVolume += float(dataList[c][5])
avgPrice = volClose/totalVolume
averageList.append((dataList[c][0][0:7], avgPrice))
c +=1
count += 1
volClose = 0
totalVolume = 0
avgPrice = 0
if c == len(dataList):
if dataList[c][0][0:7] == dataList[c+1][0][0:7]:
totalVolume += float(dataList[c][5])
volClose += (float(dataList[c][5]) * float(dataList[c][4]))
c +=1
else:
volClose += (float(dataList[c][5]) * float(dataList[c][4]))
totalVolume += float(dataList[c][5])
avgPrice = volClose/totalVolume
averageList.append((dataList[c][0][0:7], avgPrice))
c +=1
return averageList
,这就是为什么我在while语句中添加了+1。
底层if-else语句对我的代码没有影响我不会想,但这是我尝试解决这个问题。请解释我如何清理此代码。谢谢!
tradeOrderStats
答案 0 :(得分:0)
Python从0开始计数,因此您无法转到等于列表长度的索引。例如,像['a', 'b', 'c']
这样的列表的长度为3,索引为0,1和2.这就是您收到错误的原因。