【发布时间】:2015-02-13 09:41:15
【问题描述】:
我有一个固定大小为 10 的列表,我将以 2 秒的间隔放置我计算机的 CPU 百分比。 我想做的是, 删除第一个元素 将每个元素移动到列表的前一个索引 在列表的最后一个索引处记录第 11 个值
您可能会在下面看到我的代码。我做了一些调试,但我现在很困惑。我该如何解决这个问题?
__author__ = 'tim'
#-*- coding: utf-8 -*-
import psutil, os, time
def getCpuRate():
myList = [None]*10
myString=" "
myString2 = " "
i = 0
j = 0
while True:
if myList[9] is None:
myList[i] = psutil.cpu_percent(interval=2)
myString = myString + (str(myList[i]) + " ")
i = i+1
print i , myString
#time.sleep(3)
else:
while i>0:
myList[j] = myList[j+1]
#print myList[j+1] , myList[j]
for k in range(len(myList)):
myString2 = myString + (str(myList[k]) + "")
print i , j , myString2
j = j+1
i = i-1
if j >= 9:
myList[j] = psutil.cpu_percent(interval=2)
print i , j , myString2
j -= 1
print "a"
getCpuRate()
'''
mySecondList = getCpuRate()
for x in range(len(mySecondList)):
print mySecondList[x]
'''
print "b"
【问题讨论】:
-
如果你只有 10 个元素,那么第 11 个元素适合哪里?
-
我正在尝试将第 2 次覆盖到第 1 次,然后将第 3 次覆盖到第 2 次,依此类推。一旦第 10 个元素被复制到第 9 个,我需要将第 11 个元素写入第 10 个
-
这是作业还是你可以简单地使用双端队列?
from collections import deque deq = deque(maxlen=10) -
它不是硬件,我可以使用双端队列,但我只是不喜欢:)
-
if len(lst) > 10remove 第一项呢?