14

我有list大约 40 个条目。而且我经常想将一个项目附加到列表的开头(id 为 0),并想删除last列表的条目(id 为 40)。

我怎样才能做到最好?

包含 5 个条目的示例:

[0] = "herp"
[1] = "derp"
[2] = "blah"
[3] = "what"
[4] = "da..."

最后添加"wuggah"和删除后应该是这样的:

[0] = "wuggah"
[1] = "herp"
[2] = "derp"
[3] = "blah"
[4] = "what"

而且我不想最终手动将它们一个接一个地移动到下一个ID。

4

5 回答 5

12

用于insert()将项目放在列表的开头:

myList.insert(0, "wuggah")

用于pop()删除和返回列表中的项目。不带参数的 Pop 弹出列表中的最后一项

myList.pop() #removes and returns "da..."
于 2012-04-14T17:28:09.853 回答
11

使用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'])
于 2012-04-14T17:25:47.693 回答
10

采用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)
于 2012-04-14T17:30:05.790 回答
1

这是一个单线,但它可能不如其他一些有效......

myList=["wuggah"] + myList[:-1]

另请注意,它会创建一个新列表,这可能不是您想要的...

于 2012-04-14T17:31:59.607 回答
1

另一种方法

L = ["herp", "derp", "blah", "what", "da..."]

L[:0]= ["wuggah"]
L.pop()             
于 2015-05-12T23:57:07.913 回答