Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中使用索引删除项的就地函数_Python_List_Chaining - Fatal编程技术网

在Python中使用索引删除项的就地函数

在Python中使用索引删除项的就地函数,python,list,chaining,Python,List,Chaining,刚才注意到Python中没有按索引删除列表中的项的函数,链接时使用该函数 例如,我正在寻找这样的东西: 另一个\u列表=项目列表。删除[项目索引] 而不是 del项目列表[项目索引] 因为,删除(列表中的项目)在删除列表中的项目后返回列表;我想知道为什么没有使用类似的索引函数。这似乎是非常明显和琐碎的已列入,觉得有理由跳过它 有没有想过为什么这样的功能不可用 -----编辑------- list\u of\u items.pop(item\u at\u index)不适用,因为它不会返回没有要

刚才注意到Python中没有按索引删除列表中的项的函数,链接时使用该函数

例如,我正在寻找这样的东西:

另一个\u列表=项目列表。删除[项目索引]

而不是

del项目列表[项目索引]

因为,
删除(列表中的项目)
在删除列表中的
项目后返回列表
;我想知道为什么没有使用类似的索引函数。这似乎是非常明显和琐碎的已列入,觉得有理由跳过它

有没有想过为什么这样的功能不可用

-----编辑-------

list\u of\u items.pop(item\u at\u index)
不适用,因为它不会返回没有要删除的特定项的列表,因此不能用于链接。(根据文档:L.pop([index])->item--删除并返回索引中的项)

使用:

根据文件:

s、 流行音乐([i])

与x=s[i]相同;dels[i];返回x

更新

对于链接,您可以使用以下技巧。(使用包含原始列表的临时序列):


正如对问题的评论中所指出的,这并不是作为:Python就地操作实现的,作为一项规则,它不会返回None,也不会返回修改过的对象。这里有一个很好的Pythonic方法,可以使用and(请注意,
枚举
是零索引的):

这种方法的优点是,您可以同时做几件事:

>>> # remove the first and second elements
>>> [x for i, x in enumerate(y) if i != 0 and i != 1]
[5, 6]
>>> # remove the first element and all instances of 6
>>> [x for i, x in enumerate(y) if i != 0 and x != 6]
[4, 5]

Python就地操作通常会返回
None
,而不会返回修改过的对象。当标准Python可变类型在其他任何地方都不提供此功能时,为什么您希望能够链接?我希望它是
remove()
存在的。它返回修改过的对象。不,
list.remove()
返回
None
,而不是修改过的序列。看,哦,是的!那是个错误。抱歉,我不知道为什么这被否决了。这是一个非常有效的问题,并且有一个答案(答案是:使用列表理解)OP在标题中提到“到位”。列表理解返回一个新列表。@falsetru-Correct:标题在适当位置提到。问题是关于链接,这将允许。事实上,这些问题要求的是与“就位”相反的结果
x.remove()
已就位,但不允许链接。可以链接就位方法。检查我的最新答案。;)-正如@BartoszKP所说,
pop
不能用于链接。(这就是OP想要的,尽管问题的标题令人困惑。)@LondonRob,谢谢你告诉我原因。我更新了允许链接的答案。@falsetru downvote已删除。我会给你的答案加上一些解释,这很好。(尽管它改变了
a
>>> a = [1,2,3,4]
>>> [a.pop(2), a][1] # Remove the 3rd element of a and 'return' a
[1, 2, 4]
>>> a # Notice that a is changed
[1, 2, 4]
>>> y = [3,4,5,6]
>>> [x for i, x in enumerate(y) if i != 1] # remove the second element
[3, 5, 6]
>>> # remove the first and second elements
>>> [x for i, x in enumerate(y) if i != 0 and i != 1]
[5, 6]
>>> # remove the first element and all instances of 6
>>> [x for i, x in enumerate(y) if i != 0 and x != 6]
[4, 5]