如何从列表中删除第一项?

如何从列表中删除第一项?

[0, 1, 2, 3]   →   [1, 2, 3]
1201105 次浏览
>>> x = [0, 1, 2, 3, 4]>>> x.pop(0)0

更多关于这个这里

切片:

x = [0,1,2,3,4]x = x[1:]

它实际上会返回原始的一个子集,但不会修改它。

使用列表切片,请参阅Python教程列表了解更多详细信息:

>>> l = [0, 1, 2, 3, 4]>>> l[1:][1, 2, 3, 4]

你就会这么做

l = [0, 1, 2, 3, 4]l.pop(0)

l = l[1:]

优点和缺点

使用pop您可以检索值

x = l.pop(0)x就是0

您可以找到有用的列表函数这里的简短集合。

list.pop(index)

>>> l = ['a', 'b', 'c', 'd']>>> l.pop(0)'a'>>> l['b', 'c', 'd']>>>

del list[index]

>>> 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'>>> ldeque(['b', 'c', 'd'])
  • 提供从列表左端弹出的更高性能

然后删除它:

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]

您可以使用list.reverse()反转列表,然后使用list.pop()删除最后一个元素,例如:

l = [0, 1, 2, 3, 4]l.reverse()print l[4, 3, 2, 1, 0]

l.pop()0l.pop()1l.pop()2l.pop()3l.pop()4

如果您使用numpy,则需要使用删除方法:

import numpy as np
a = np.array([1, 2, 3, 4, 5])
a = np.delete(a, 0)
print(a) # [2 3 4 5]

有一种名为deque或双端队列的数据结构,它比列表更快、更高效。您可以使用您的列表并将其转换为双端队列,并在其中进行所需的转换。您也可以将双端队列转换回列表。

import collectionsmylist = [0, 1, 2, 3, 4]
#make a deque from your listde = collections.deque(mylist)
#you can remove from a deque from either left side or right sidede.popleft()print(de)
#you can covert the deque back to listmylist = list(de)print(mylist)

Deque还提供了非常有用的功能,例如将元素插入列表的任意一侧或任何特定索引。您还可以旋转或反转双端队列。试一试!

拆包作业:

您可以使用PEP 3132中提到的解包赋值。

解决方案:

您应该尝试按照以下方式拆解包装:

>>> l = [0, 1, 2, 3, 4]>>> _, *l = l>>> l[1, 2, 3, 4]

说明:

PEP 3132所示:

此PEP建议更改可迭代的解包语法,允许指定一个“包罗万象”的名称,该名称将被分配一个所有项目的列表没有分配给“常规”名称。

一个例子说超过一千字:

>>> a, *b, c = range(5)>>> a0>>> c4>>> b[1, 2, 3]

这对我有用,而不是像下面这样使用pop,当然会是0,因为pop的结果/返回值

>>> x = [0, 1, 2, 3].pop(0)>>> x0

使用下面的方法将跳过第一个值:

>>> x = [0, 1, 2, 3][1:]>>> x[1, 2, 3]