添加条目列表并删除Python中的第一个条目

11 python list append

我有list大约40个条目.而且我经常想要将一个项目附加到列表的开头(ID为0)并且想要列表deletelast条目(ID为40).

我怎么做到最好?

like: (有5个条目的例子)

    [0] = "herp"
    [1] = "derp"
    [2] = "blah"
    [3] = "what"
    [4] = "da..."
Run Code Online (Sandbox Code Playgroud)

添加"wuggah"并删除最后它应该是:

    [0] = "wuggah"
    [1] = "herp"
    [2] = "derp"
    [3] = "blah"
    [4] = "what"
Run Code Online (Sandbox Code Playgroud)

或附加一个并删除第一个.

而且我不想最终手动将所有条目一个接一个地移动到下一个id.

Joe*_*ett 11

使用insert()在列表的开头放置一个项目:

myList.insert(0, "wuggah")
Run Code Online (Sandbox Code Playgroud)

使用pop()删除并返回列表中的一个项目.弹出没有参数弹出列表中的最后一项

myList.pop() #removes and returns "da..."
Run Code Online (Sandbox Code Playgroud)


phi*_*hag 7

使用collections.deque:

>>> import collections
>>> q = collections.deque(["herp", "derp", "blah", "what", "da.."])
>>> q.appendleft('wuggah')
>>> q.pop()
'da..'
>>> q
deque(['wuggah', 'herp', 'derp', 'blah', 'what'])
Run Code Online (Sandbox Code Playgroud)

  • @wagglewax是的,除了这是O(1)操作而不是O(n). (2认同)

Mar*_*cin 7

使用 collections.deque

In [21]: from collections import deque

In [22]: d = deque([], 3)   

In [24]: for c in '12345678':
   ....:     d.appendleft(c)
   ....:     print d
   ....:
deque(['1'], maxlen=3)
deque(['2', '1'], maxlen=3)
deque(['3', '2', '1'], maxlen=3)
deque(['4', '3', '2'], maxlen=3)
deque(['5', '4', '3'], maxlen=3)
deque(['6', '5', '4'], maxlen=3)
deque(['7', '6', '5'], maxlen=3)
deque(['8', '7', '6'], maxlen=3)
Run Code Online (Sandbox Code Playgroud)

  • 使用最大长度是一个更好的解决方案,更优雅,说,OP想要预先添加项目,而不是追加它 - 你想要``deque.appendleft()``.编辑. (3认同)