我正在尝试为我正在创建的游戏编写一些代码。当用户完成游戏时,用户的得分(x
)被添加到名为scores
的列表中的第一个位置。
我需要将测验的每个后续尝试都附加到列表中的下一个位置。经过三次尝试,我希望程序删除列表中的第一项,从而只存储最后三次尝试。这是我写的代码。
if myname in students:
scores = students[myname]
which = 1
which-= 1
if 0 <= which < len(scores):
scores[which] = x
elif which != -1:
print("Invalid Score Number")
else:
print("Student not found")
答案 0 :(得分:4)
您可以使用collections.deque
轻松完成此操作;只需将maxlen
设置为所需的最大长度,然后右侧的新项目将推出左侧的旧项目:
>>> from collections import deque
>>> d = deque(maxlen=3)
>>> for x in range(5):
d.append(x)
print d
deque([0], maxlen=3)
deque([0, 1], maxlen=3)
deque([0, 1, 2], maxlen=3)
deque([1, 2, 3], maxlen=3)
deque([2, 3, 4], maxlen=3)
反之亦然:
>>> d.appendleft(5)
>>> d
deque([5, 2, 3], maxlen=3)
具有香草列表的等价物:
>>> l = []
>>> for x in range(5):
l.append(x)
if len(l) > 3:
_ = l.pop(0)
print l
[0]
[0, 1]
[0, 1, 2]
[1, 2, 3]
[2, 3, 4]
下划线_
表示我们不会使用pop
ped值。