当前位置:  开发笔记 > 编程语言 > 正文

删除列表中第一项的函数(Python)

如何解决《删除列表中第一项的函数(Python)》经验,为你挑选了1个好方法。

我正在尝试编写一个删除Python列表中第一项的函数.这就是我尝试过的.当我调用函数时为什么不删除remove_first_wrong?当我在main函数中执行它时,为什么列表切片方法会起作用?

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

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

if __name__ == '__main__':
    l = [1, 2, 3, 4, 5]
    remove_first_wrong(l)
    print(l)

    l_2 = [1, 2, 3, 4, 5]
    remove_first_right(l_2)
    print(l_2)

    # Why does this work and remove_first_wrong doesn't?
    l_3 = [1, 2, 3, 4, 5]
    l_3 = l_3[1:]
    print(l_3)

Martijn Piet.. 8

切片列表会返回一个新的列表对象,它是您在切片中指示的原始列表索引的副本.然后你反弹lst(函数中的本地名称)来引用该新列表.在此过程中永远不会更改旧列表.

list.pop()另一方面,对列表对象本身进行操作.您使用什么参考到达列表并不重要.

没有函数你会看到同样的事情:

>>> a = [1, 2]
>>> b = a[:]  # slice with all the elements, produces a *copy*
>>> b
[1, 2]
>>> a.pop()  # remove an element from a won't change b
2
>>> b
[1, 2]
>>> a
[1]

使用[:]是制作列表浅表副本的两种方法之一,请参阅如何克隆或复制列表?

您可能想要阅读或观看Ned Batchelder的名称和值预测,以进一步了解Python名称和对象的工作原理.



1> Martijn Piet..:

切片列表会返回一个新的列表对象,它是您在切片中指示的原始列表索引的副本.然后你反弹lst(函数中的本地名称)来引用该新列表.在此过程中永远不会更改旧列表.

list.pop()另一方面,对列表对象本身进行操作.您使用什么参考到达列表并不重要.

没有函数你会看到同样的事情:

>>> a = [1, 2]
>>> b = a[:]  # slice with all the elements, produces a *copy*
>>> b
[1, 2]
>>> a.pop()  # remove an element from a won't change b
2
>>> b
[1, 2]
>>> a
[1]

使用[:]是制作列表浅表副本的两种方法之一,请参阅如何克隆或复制列表?

您可能想要阅读或观看Ned Batchelder的名称和值预测,以进一步了解Python名称和对象的工作原理.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有