您可以找到一些有用的列表函数 here。
>>> l = ['a', 'b', 'c', 'd']
>>> l.pop(0)
'a'
>>> l
['b', 'c', 'd']
>>>
>>> l = ['a', 'b', 'c', 'd']
>>> del l[0]
>>> l
['b', 'c', 'd']
>>>
这些都修改了您的原始列表。
其他人建议使用切片:
复制列表
可以返回一个子集
此外,如果您执行许多 pop(0)
,您应该查看 collections.deque
from collections import deque
>>> l = deque(['a', 'b', 'c', 'd'])
>>> l.popleft()
'a'
>>> l
deque(['b', 'c', 'd'])
提供从列表左端弹出的更高性能
切片:
x = [0,1,2,3,4]
x = x[1:]
这实际上会返回原始的子集,但不会修改它。
x
为空,x=x[1:]
会将其留空而不会抱怨。 x.pop(0)
会抛出一个空列表 x
。有时抛出是人们想要的:如果列表中至少有一个元素的假设是错误的,那么人们可能希望得到通知。
你会这样做
l = [0, 1, 2, 3, 4]
l.pop(0)
或l = l[1:]
优点和缺点
使用 pop 您可以检索值
说 x = l.pop(0)
x
将是 0
然后删除它:
x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]
您还可以使用 list.remove(a[0])
来 pop
列出列表中的第一个元素。
>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]
a.remove(a[1-1])
的答案?那是另一种方式。
list.remove(a[i])
删除第 i 个元素。对于重复值,它可能会找到具有相同值的较早元素,并删除该元素而不是第 i 个。
您可以使用 list.reverse()
反转列表,然后使用 list.pop()
删除最后一个元素,例如:
l = [0, 1, 2, 3, 4]
l.reverse()
print l
[4, 3, 2, 1, 0]
l.pop()
0
l.pop()
1
l.pop()
2
l.pop()
3
l.pop()
4
l.pop(0)
时,为什么它会如此复杂?您在使用 l.pop()
后忘记了 l.reverse()
。您的解决方案性能不佳
有一种称为 deque
或双端队列的数据结构,它比列表更快、更高效。您可以使用您的列表并将其转换为双端队列并在其中进行所需的转换。您还可以将双端队列转换回列表。
import collections
mylist = [0, 1, 2, 3, 4]
#make a deque from your list
de = collections.deque(mylist)
#you can remove from a deque from either left side or right side
de.popleft()
print(de)
#you can covert the deque back to list
mylist = list(de)
print(mylist)
Deque 还提供了非常有用的功能,例如将元素插入列表的任一侧或任何特定索引。您还可以旋转或反转双端队列。试试看!
这对我有用,而不是像下面那样使用 pop
,它当然是 0,因为 pop
的结果/返回值
>>> x = [0, 1, 2, 3].pop(0)
>>> x
0
使用以下方法将跳过第一个值:
>>> x = [0, 1, 2, 3][1:]
>>> x
[1, 2, 3]
deque
将pop(0)
设为 200 - 250 ms。太感谢了。