对于自我实践,我正在编写一个字典程序,它将数据存储在以下数据结构中:[(average,month),(average,month),....,(average,month)]
。数据文件名为table.csv,可以在链接中找到:
http://www.cse.msu.edu/~cse231/PracticeOfComputingUsingPython/05_ListsTuples/AppleStock/
我遇到的问题是,当这个条件变为假时,为什么列表testList[x][0]
会变成空白?:
if dates == UniqueDates[x]:
当x = 0
,testList[0][0]
,条件为True
时,列表为[474.98, 468.22, 454.7, 455.19, 439.76, 450.99]
。但是,当它变为False
时,同一个列表testList[0][0]
神秘地变为[ ]
。为什么不保留列表中的值?
f = open('table.csv','r').readlines()
col = 6
testList = []
uniqueDates = []
x = 0
for i in range(1,len(f)):
dates = f[i].split(',')[0][:7]
column = float(f[i].split(',')[col])
if dates not in uniqueDates:
uniqueDates.append(dates)
testList.append(())
testList[x] = [],dates
if dates == uniqueDates[x]:
testList[x][0].append(column)
else:
testList[x][0].append((mean(testList[x][0]),uniqueDates[x]))
x += 1
testList[x][0].append(column)
答案 0 :(得分:2)
考虑这一部分:
if dates not in uniqueDates:
uniqueDates.append(dates)
testList.append(())
testList[x] = [],dates
第一次执行此操作是在处理第7行时,第一次更改月份。在执行此部分之前,x == 0
;所以这个块中的最后一行替换了testList
的第一个元素。我想你想要它替换刚刚附加的新空元素。
我怀疑你想要的是简单地将最后两行合并为一个:
if dates not in uniqueDates:
uniqueDates.append(dates)
testList.append(([],dates))