注意到Python中没有函数可以通过索引删除列表中的项目,以便在链接时使用。
例如,我正在寻找类似的东西:
another_list = list_of_items.remove[item-index]
而不是
del list_of_items[item_index]
因为,remove(item_in_list)
在删除item_in_list
后返回列表;我想知道为什么索引的类似函数被遗漏了。似乎非常明显和微不足道的被包括在内,觉得有理由跳过它。
关于为什么这样的功能不可用的任何想法?
-----编辑-------
list_of_items.pop(item_at_index)
不合适,因为如果没有要删除的特定项目,它不返回列表,因此不能用于链接。 (根据文件: L.pop([index]) - > item - 删除并返回索引的项目)
答案 0 :(得分:2)
使用list.pop
:
>>> a = [1,2,3,4]
>>> a.pop(2)
3
>>> a
[1, 2, 4]
根据文件:
s.pop([I])
与x = s [i]相同; del s [i];返回x
<强>更新强>
对于链接,您可以使用以下技巧。 (使用包含原始列表的临时序列):
>>> 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]
答案 1 :(得分:1)
使用list comprehensions和enumerate
这是一种不错的Pythonic方法(注意enumerate
为零索引):
>>> 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]
答案 2 :(得分:0)
正如Martijn Pieters在该问题的评论中所指出的那样,这并未实现为: Python就地操作,通常会返回None,而不是更改的对象。