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

2025-04-15 09:20:00
admin
原创
61
摘要:问题描述:如何从列表中删除第一项?[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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   3949  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   2735  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Freshdesk、ClickUp、nTask、Hubstaff、Plutio、Productive、Targa、Bonsai、Wrike。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在项目管理过程中面临着诸多痛点,如任务分配不...
项目管理系统   74  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Monday、TeamGantt、Filestage、Chanty、Visor、Smartsheet、Productive、Quire、Planview。在当今快速变化的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多项目经理和团队在管理复杂项目时,常...
开源项目管理工具   82  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、Smartsheet、GanttPRO、Backlog、Visor、ResourceGuru、Productive、Xebrio、Hive、Quire。在当今快节奏的商业环境中,项目管理已成为企业成功的关键因素之一。然而,许多企业在选择项目管理工具时常常面临困惑:...
项目管理系统   68  
热门文章
项目管理软件有哪些?
曾咪二维码

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

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

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用