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

2025-04-15 09:20:00
admin
原创
34
摘要:问题描述:如何从列表中删除第一项?[0, 1, 2, 3] → [1, 2, 3] 解决方案 1:您可以在此处找到一些有用的列表函数。list.pop(index)>>> l = ['a', 'b', 'c', 'd'] >>> l.pop(0) 'a' >&...

问题描述:

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

[0, 1, 2, 3]   →   [1, 2, 3]

解决方案 1:

您可以在此处找到一些有用的列表函数。

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

解决方案 2:

切片:

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

这实际上会返回原始内容的子集但不会对其进行修改。

解决方案 3:

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

更多信息请见此处。

解决方案 4:

对于列表切片,请参阅有关列表的 Python 教程以了解更多详细信息:

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

解决方案 5:

你只需要这样做

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

或者l = l[1:]

优点和缺点

使用 pop 可以检索值

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

解决方案 6:

然后删除它:

x = [0, 1, 2, 3, 4]
del x[0]
print x
# [1, 2, 3, 4]

解决方案 7:

拆包任务:

您可以使用PEP 3132中提到的解包分配。

解决方案:

您应该尝试按如下方式解包:

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

解释:

正如PEP 3132中提到的:

本 PEP 建议对可迭代解包语法进行更改,允许指定一个“catch-all”名称,该名称将被分配一个未分配给“常规”名称的所有项目的列表。

一个例子胜过千言万语:

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

解决方案 8:

有一种称为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)

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

解决方案 9:

您还可以使用它list.remove(a[0])pop取出列表中的第一个元素。

>>>> a=[1,2,3,4,5]
>>>> a.remove(a[0])
>>>> print a
>>>> [2,3,4,5]

解决方案 10:

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

import numpy as np

a = np.array([1, 2, 3, 4, 5])

a = np.delete(a, 0)

print(a) # [2 3 4 5]

解决方案 11:

您可以使用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

解决方案 12:

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

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

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

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

解决方案 13:

对这里建议的方法进行了一些计时 -

from timeit import timeit


def reassign_slice(lst):
    lst = lst[1:]

def delete_first_index(lst):
    del lst[0]

def pop_first(lst):
    lst.pop(0)

def assign_slice_as_empty_list(lst):
    lst[:1] = []

def delete_slice(lst):
    del lst[:1]

for suggested_method in reassign_slice, delete_first_index, pop_first, assign_slice_as_empty_list, delete_slice:
    lst = list(range(10**6))
    res = timeit(lambda: suggested_method(lst), number=1000)
    print(f'{suggested_method.__name__} - {res}')

''' In Python 3.13.0 on Linux(OpenSUSE), I got -

    reassign_slice - 3.2175468700006604
    delete_first_index - 0.08350443698873278
    pop_first - 0.08226470999943558
    assign_slice_as_empty_list - 0.08683017300791107
    delete_slice - 0.09479296299105044

'''

解决方案 14:

删除这里未提及的第一个元素的另一种方法是将空列表分配给包含第一个元素的切片:

lst = [0, 1, 2, 3]

lst[:1] = []
print(lst)        # [1, 2, 3]

与 不同list.pop(),即使列表为空,切片也不会引发 IndexError,这在某些情况下很有用(而在其他情况下则没用)。

lst = []

lst.pop(0)         # <--- IndexError
del lst[:1]        # <--- no error
lst[:] = lst[1:]   # <--- no error
lst[:1] = []       # <--- no error
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用