我有一个固定大小为10的列表,我会把我的计算机CPU%的间隔2秒。我想做的是, 拆卸第一个元件 将每个元素移到列表的前一个索引中 记录列表最后一个索引的第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"
你为什么不用deque?你知道吗
只需填写10个伪值,然后使用
append
和pop
。所以所有的东西都向左移动。或者指定deque的maxlen=10
(最大长度)并仅使用append
。你知道吗您可以使用
deque
(documentation link),而不是使用列表,这是一个针对所需操作类型进行优化的列表。你知道吗然后,循环变得简单得多:
请注意,我修改了顺序,以便在开头插入新值,在结尾删除旧值。这样,在打印
q
时,新值首先出现。如果你不想这样,你可以改变appendleft
的append
和pop
的popleft
。你知道吗相关问题 更多 >
编程相关推荐