如何从python列表中删除特定元素?

时间:2016-02-26 12:07:17

标签: python python-3.x numpy

我想使用B数组ID删除A元素,给定特定标量ID“C”

在matlab中,我可以这样做:

public class MyService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        KeyguardManager kgMgr =
                (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        boolean showing = kgMgr.inKeyguardRestrictedInputMode();
        if (showing){
            Log.i("Point ", "1");
        }else{
                Log.i("Point ", "2");
            }
        }
    }
}

这是我的代码示例:

A(B == C) = []

我想完全删除列表中的第二个框。

我怎么能在python中这样做?我有笨蛋。

3 个答案:

答案 0 :(得分:2)

没有导入numpy,您可以pop出元素。尝试:

boxes = [[1,2,20,20],[4,8,20,20],[8,10,40,40]]
IDx = 1
pop_element = boxes.pop(IDx)

列表boxes现在为[[1, 2, 20, 20], [8, 10, 40, 40]]pop_element[4, 8, 20, 20]

PS:在python索引中从0而不是1开始。

答案 1 :(得分:1)

您可以使用numpy索引。您可以在docs中找到更多信息。对于你的情况:

import numpy as np
boxes = np.array([[1,2,20,20],[4,8,20,20],[8,10,40,40]])
boxIDs = np.array([1,2,3])

IDx = 2

In [98]: boxes[boxIDs != IDx, :]
Out[98]:
array([[ 1,  2, 20, 20],
       [ 8, 10, 40, 40]])

答案 2 :(得分:0)

在普通的Python中,我认为你想这样做:

try:
    helpindex = boxIDs.index(IDx)
    del boxes[index], boxIDs[index]
except ValueError:
    # Already deleted
    pass

请注意,如果您依赖boxIDs成为" parallel"使用boxes,您必须确保通过从两者中删除它们来保持平行。