附加到列表中的下一个位置

时间:2014-10-14 14:53:01

标签: python list append

我正在尝试为我正在创建的游戏编写一些代码。当用户完成游戏时,用户的得分(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")

1 个答案:

答案 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值。