【发布时间】:2012-08-07 08:06:06
【问题描述】:
我正在编写一个 Python 脚本,该脚本读取一个 CSV 文件并创建一个双端队列列表。如果我在添加之前准确打印出添加到列表中的内容,它看起来就像我想要的,但是当我打印出列表本身时,我可以看到 append 正在用最新的元素覆盖列表中的所有元素。
# Window is a list containing many instances
def slideWindow(window, nextInstance, num_attributes):
attribute = nextInstance.pop(0)
window.popleft()
for i in range(num_attributes):
window.pop()
window.extendleft(reversed(nextInstance))
window.appendleft(attribute)
return window
def convertDataFormat(filename, window_size):
with open(filename, 'rU') as f:
reader = csv.reader(f)
window = deque()
alldata = deque()
i = 0
for row in reader:
if i < (window_size-1):
window.extendleft(reversed(row[1:]))
i+=1
else:
window.extendleft(reversed(row))
break
alldata.append(window)
for row in reader:
window = slideWindow(window, row, NUM_ATTRIBUTES)
alldata.append(window)
# print alldata
f.close()
return alldata
【问题讨论】:
-
旁注:当你使用
with open(...)时,你不需要关闭文件。事实上,这是上下文管理器的优势之一。
标签: python list append overwrite