Ubuntu-18.04、Python-2.7.15
我想初始化一个150个零值的列表作为FIFO堆栈,然后每秒钟更新一次堆栈
panel_width = 150
rx_values = [0] * panel_width
for i in range(0, panel_width):
rx_values[i] = 0
def refresh():
global rx_values
# update the stack
rx_values.remove(0)
rx_values[panel_width -1] = rx_bps
# more stuff
return
refresh() # every second
产生:
Traceback (most recent call last):
File "./wxpython/bandwidth/bandwidth.1804.2.py", line 64, in rx_refresh
rx_values[panel_width -1] = rx_bps
IndexError: list assignment index out of range
我做错什么了
创建一个包含150项的列表。这意味着项目索引从0到149
然后,删除列表的第一个元素:
因此,
rx_values
的长度减少1:但您尝试访问索引149处的元素:
您需要在列表末尾添加新值:
您的错误是由于删除列表中的某个元素时,列表的大小会发生变化。我想您要做的是保持FIFO队列的长度,如果删除第一个元素,则必须在末尾添加一个新元素
不必指定最后一个元素,只需附加它即可
我还使用了pop而不是remove,因为pop返回要删除的值,对于FIFO队列,获取该值可能会很有用
相关问题 更多 >
编程相关推荐