該代碼塊取得一個列表(從csv文件創建)並試圖對其進行組織。我知道它看起來非常混亂,我在學校編了幾個月的編碼。比較列表的最後一個索引以便操作具有該索引的變量
無論如何,代碼[c]
指數的第一指標的前7個字符相比較(因爲我必須去通過所有2500+列表在此列表中)。如果它們是相同的,我會對這些變量做一些數學計算。
除了數據的最終分組外,它全部工作。由於[c+1]
的while c <len(dataList)
,我得到「索引超出範圍」或沿着這些行的東西,這就是爲什麼我在while語句中添加了+1的原因。
底部的if-else語句對我的代碼沒有影響我不認爲,但那是我在解決這個問題的嘗試。請解釋我如何清理這些代碼。謝謝!
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
如果比較長度爲n的列表中的連續元素,通常要麼進行n-1次比較,要麼通過將最後一個元素與最前面的元素進行比較來進行n次比較(即, )。這是你的意圖嗎? – zehnpaard
我可以將它與第一個元素進行比較,但我不確定如何循環以獲取第一個元素。第一個和最後一個元素不相等。 – Brett