python - 从索引列表中删除项目

时间:2016-01-16 18:01:48

标签: python list numpy tuples

我想从给定索引值的元组列表中删除元素。

输入[(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

要完成的任务
删除给定索引处的项目:2,3

所需的输出: [(1,2),(3,4),(9,10)]

我尝试过以下代码:

list(numpy.delete(input, [3,2]))  

但是我得到了以下输出: [1, 2, 5, 6, 7, 8, 9, 10]

请建议我解决此案的可能方法。

3 个答案:

答案 0 :(得分:3)

list.pop()将删除所选元素。它们必须以相反的顺序完成,以免改变后者的位置。

<?php
$result = $this->rawResponse;
$config = Array(
    'input-xml' => 1,
);
$repairitfirst = tidy_repair_string($result, $config);
$willbearray = json_encode(simplexml_load_string($repairitfirst));
$jsonfromxml = $willbearray;
?>

答案 1 :(得分:1)

您可以使用del

del mylist[index]

答案 2 :(得分:0)

numpy:指定多维数组的轴

你对numpy所做的很接近,但是你使用了错误的轴。如果您指定axis=0,则会获得所需的结果。

>>> import numpy as np
>>> l = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]  
>>> l = np.array(l)
>>> l
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10]])
>>> np.delete(l, [2,3], axis=0)
array([[ 1,  2],
       [ 3,  4],
       [ 9, 10]])

Vanilla Python

对于逐步改变列表的操作,重要的是按索引的降序排列,例如[3, 2]代替[2, 3]

使用pop()

>>> l = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]  
>>> l.pop(3)
(7, 8)
>>> l.pop(2)
(5, 6)
>>> l
[(1, 2), (3, 4), (9, 10)]

使用del

>>> l = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]  
>>> for i in [3, 2]:
...     del l[i]
... 
>>> l
[(1, 2), (3, 4), (9, 10)]

使用remove()

>>> l = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]  
>>> remove_list = [l[2], l[3]]
>>> remove_list
[(5, 6), (7, 8)]
>>> for r in remove_list:
...     l.remove(r)
... 
>>> l
[(1, 2), (3, 4), (9, 10)]